返回信息流比如怎么让10个线程同时启动?不用countdownlatch、cyclicbarrier这种类库的话,有什么好办法嘛?
这是一条镜像帖。来源:北邮人论坛 / java / #50320同步于 2016/5/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java多线程同时启动
MengNiu
2016/5/16镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
=。=volitate一个变量,然后大家都while检查它?
【 在 MengNiu 的大作中提到: 】
: 比如怎么让10个线程同时启动?不用countdownlatch、cyclicbarrier这种类库的话,有什么好办法嘛?
LZ说的启动估计是指执行run方法里的代码吧...
【 在 lzrak47 的大作中提到: 】
: countdownlatch cyclicbarrier跟同时启动没关系,它俩是判断多个线程是否全部达到某个阑珊的。
每个线程都await,然后signalAll也行,不过没必要。
【 在 LNAmp 的大作中提到: 】
: LZ说的启动估计是指执行run方法里的代码吧...
其实真正的答案是“做不到”。
- 操作系统可以自由决定哪个线程开始运行
- 即使一个线程已经开始运行了,操作系统可以任意决定它什么时候暂停运行。
- 就算用condition加signalAll,它做的只是让所有的线程处于“允许运行”的状态,具体什么时候运行,还是看操作系统的心情
- 除非你的电脑有10个CPU核心,否则不可能10个线程同时运行。
- 一次context switch大概要几万个CPU周期
所以,其实没有比for (Thread t : threads) t.start();更好的办法。
道理我懂,可是这样不能给面试官展现出牛逼的逼格,哈哈,原谅我是个低俗的人
【 在 nuanyangyang 的大作中提到: 】
: 其实真正的答案是“做不到”。
: - 操作系统可以自由决定哪个线程开始运行
: - 即使一个线程已经开始运行了,操作系统可以任意决定它什么时候暂停运行。
: ...................