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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苗润 中级黑马   /  2014-6-4 17:23  /  1142 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 苗润 于 2014-6-4 20:25 编辑
  1. Thread t1 = new Thread(j);
  2.                 Thread t2 = new Thread(j);
  3.                 t1.start();
  4.                 t2.start();
  5.                 t1.join();
复制代码

在t1.join以后 不是应该在t1线程运行完以后才执行其他线程的么,为什么t1 t2会交替执行。刚开始是主线程拥有执行权  当运行到 t2.start()以后 这时候 主线程 t1 t2 争夺执行权 为什么在 t1.join()以后  只把主线程屏蔽了 而没有屏蔽掉t2

4 个回复

倒序浏览
join方法是当前线程等待调用join方法的线程运行结束在运行
当前线程是主线程,调用join的是t1
所以t2并没有等待
回复 使用道具 举报 1 0
Thread t1 = new Thread(j);
                Thread t2 = new Thread(j);
                t2.start();
                t1.start();
                t1.join();
把t2.start()放在t1.start()前面,让t2做为主线线。这时调用t1.join()就会按照你的要求运行了
回复 使用道具 举报 0 1
当t1和t2 同时等待时,t1先执行,所以会交替执行
回复 使用道具 举报 1 0
kevinmesss.tz 发表于 2014-6-4 17:58
join方法是当前线程等待调用join方法的线程运行结束在运行
当前线程是主线程,调用join的是t1
所以t2并没有 ...

哦~ 当前线程  懂了谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马