黑马程序员技术交流社区
标题:
如何控制线程加载顺序?
[打印本页]
作者:
yxz
时间:
2013-9-9 08:26
标题:
如何控制线程加载顺序?
本帖最后由 潘才新 于 2013-9-9 23:37 编辑
下面这种的代码,如果要让线程按t1,t2,t3的顺序开始执行,有一种方法就是在每一个start后面加sleep。我觉得这样做不是很妥当。有没有其他更专业的做法?
Printes pr1=new Printes();
Thread t1=new Thread(pr1);
Thread t2=new Thread(pr1);
Thread t3=new Thread(pr1);
t1.start();
t2.start();
t3.start();
复制代码
作者:
张歆明
时间:
2013-9-9 11:25
米有啦 因为线程的执行顺序是CPU决定的 就算sleep之后 只能说当前线程不被执行了 但是 剩下的N多线程到底谁先执行 也是未知的 就是CPU决定的
作者:
吕振中
时间:
2013-9-9 13:42
我暂时也刚同步锁this这一块,后面还没看呢,不过前面老师介绍过,线程一共就那么几种状态,控制状态的方法一共就2种,所以应该没啥方法控制。
作者:
黄文伯
时间:
2013-9-9 14:11
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
作者:
吃阁子的猫
时间:
2013-9-9 16:12
可以设置线程额优先级,JVM以及操作系统会优先处理优先级别高的线程,但不代表这些线程一定会先完成。设定优先级只能建议系统更快的处理,而不能强制
作者:
yxz
时间:
2013-9-9 16:48
谢谢LS各位啦,我的问题已经解决了,设置优先级也是一种办法。
作者:
Friendy89
时间:
2013-9-9 22:47
同志,还可以用线程通讯的方式解决。每个线程标记一下,如1,2,3.线程一执行时,让其他两个线程等待,线程1执行完将线程2唤醒,,线程2执行完将线程3唤醒,依次下去,就OK了
作者:
陶智第
时间:
2013-9-9 22:50
Printes pr1=new Printes();
Thread t1=new Thread(pr1);
Thread t2=new Thread(pr1);
Thread t3=new Thread(pr1);
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
像上面那样加入两条t1.join();语句
该语句的作用是等当前线程执行完,再执行其他线程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2