CountDownLatch.countDown()方法放在哪个位置的原则?
来源:5-6 数据发送与接收并行-3
Lymanhan
2019-01-20
这个地方的countDown为什么放在106行,这个位置,run方法刚开始执行,listener也刚开始执行,什么都没做呢,就countdown,那在45行的时候它不就直接返回listener了吗?
写回答
1回答
-
Qiujuer
2019-01-20
可以往后推移一些,但是无法完全推移到进入监听阶段,因为监听是阻塞的,我们只能减少线程带来的延迟,进行等待,而无法完全等待到监听已经进入时。
至于:“感觉countDown放在while循环之前比较合适”
那是没啥差异的,因为后面的执行过程到进入阻塞前几乎是没有时间的等待的;完全取决于CPU的调度,放在前面一点,与放在完全进入阻塞前其实概率几乎没差别的,因为CPU切换完全有可能在run开始的地方也有可能在后面的任意一个位置。
这个CountDown只是为了减少线程start启动调用后系统的线程启动延迟得到解决而已,至于真正的监听操作只能看CPU的实际调度,因为在循环之前的阶段的初始化操作其实根本没啥时间消耗,如果觉得有时间消耗,完全可以把这个部分放线程的构造函数即可。
那么run方法就只有count的操作以及while循环了,就不需要初始化部分了;这是可以避免的。
谢谢对课程的支持,看的很深入;赞
10
相似问题
求那个TCP可靠性示意图
回答 3
关于接口定义位置的问题
回答 1