请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

代码执行结果不同。

同样的代码,为什么我的代码先执行的do something in main, 后执行的do something in callable呢?这个和线程优先级有关系吗?

正在回答 回答被采纳积分+3

2回答

提问者 慕运维6192945 2018-05-09 12:01:10

其实您说的这个我能理解,我奇怪的点是为啥您的代码一直是callable里的先执行,我的一直是main先执行,这里比较迷惑

0 回复 有任何疑惑可以回复我~
  • 这两个线程是通过cpu调度优先级处理的,然后上面线程做完do something in callable就开始睡眠,然后就接着执行do something in main了,然后1秒后执行future.get,4秒后取的return返回值返回Done结果
    回复 有任何疑惑可以回复我~ 2018-06-07 20:38:00
Jimin 2018-05-09 10:50:08

你好,当前线程额外启动了一个线程,这时当前线程和额外启动的线程由于受CPU调度的影响,执行先后并不是完全确定的,你如果多执行几次,应该也会出现我课程演示时相同的结果。

不过有一点可以肯定的是,发生这种情况时,大家执行的时间都会非常的接近,应该是毫秒级别相差无几。

这个例子也说明了一个问题,就是两个线程定义的先后顺序决定不了执行的顺序。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信