A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yxz 中级黑马   /  2013-9-9 08:26  /  1771 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘才新 于 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();
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 很给力!

查看全部评分

7 个回复

正序浏览
  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();语句
该语句的作用是等当前线程执行完,再执行其他线程

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1

查看全部评分

回复 使用道具 举报
同志,还可以用线程通讯的方式解决。每个线程标记一下,如1,2,3.线程一执行时,让其他两个线程等待,线程1执行完将线程2唤醒,,线程2执行完将线程3唤醒,依次下去,就OK了
回复 使用道具 举报
谢谢LS各位啦,我的问题已经解决了,设置优先级也是一种办法。
回复 使用道具 举报
可以设置线程额优先级,JVM以及操作系统会优先处理优先级别高的线程,但不代表这些线程一定会先完成。设定优先级只能建议系统更快的处理,而不能强制
回复 使用道具 举报
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
我暂时也刚同步锁this这一块,后面还没看呢,不过前面老师介绍过,线程一共就那么几种状态,控制状态的方法一共就2种,所以应该没啥方法控制。

回复 使用道具 举报
米有啦  因为线程的执行顺序是CPU决定的  就算sleep之后 只能说当前线程不被执行了 但是  剩下的N多线程到底谁先执行  也是未知的 就是CPU决定的

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马