您的位置 首页 java

Java线程的调度问题

当多个 线程 同时运行时如何控制先后顺序

1、通过设置线程的优先级,但是优先级无法保障线程的执行次序的,优先级只是提高了优先级高的线程获取 CPU 资源的概率。也就是说,这个方法不靠谱。 Java线程的调度问题

如图我设置t1的优先级为最高10,t2优先级为最低1;但是我不能保证t1就比t2运行次数多,多次运行结果各部相同。

2、使用线程合并,就是常用的join方法,上图中其实已经用到了。一般来说main也是一个线程,如果t1、t2不加join方法的话,main会先于t1、t2执行完成,count1、count2是得不到想要的结果的。

3、使用线程通信,就是常用的sleep、wait等方法 Java线程的调度问题

如同,加上sleep方法,哪怕仅仅休眠1毫秒,count1、count2的结果都趋于平衡。当然sleep和wait是有区别的,当处于同步块中时,sleep是不释放同步锁的而wait释放同步锁。

4、使用线程队列,如countDown() 和 await()等方法,和线程合并比较类似,不过应用更复杂功能加强了,我还不是很了解,就不说了,晓得的朋友可以给讲讲!

文章来源:智云一二三科技

文章标题:Java线程的调度问题

文章地址:https://www.zhihuclub.com/177951.shtml

关于作者: 智云科技

热门文章

网站地图