黑马程序员技术交流社区

标题: 如何控制线程加载顺序? [打印本页]

作者: yxz    时间: 2013-9-9 08:26
标题: 如何控制线程加载顺序?
本帖最后由 潘才新 于 2013-9-9 23:37 编辑

下面这种的代码,如果要让线程按t1,t2,t3的顺序开始执行,有一种方法就是在每一个start后面加sleep。我觉得这样做不是很妥当。有没有其他更专业的做法?
  1.   Printes pr1=new Printes();
  2.                 Thread t1=new Thread(pr1);
  3.                 Thread t2=new Thread(pr1);
  4.                 Thread t3=new Thread(pr1);
  5.                 t1.start();
  6.                 t2.start();
  7.                 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