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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 画了一个圈儿 中级黑马   /  2014-8-18 09:44  /  752 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 画了一个圈儿 于 2014-8-18 09:47 编辑

join()方法的作用:临时加入线程执行
  1. class JoinDemo
  2. {
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                 Join jo = new Join();
  6.                 Thread t1 = new Thread(jo);
  7.                 Thread t2 = new Thread(jo);               
  8.                 t1.start();
  9.                 t1.join();                //主线程将CPU执行权交给线程t1
  10.                                              //t1运行结束后再将执行术交还给主线程
  11.                 t2.start();
  12.                 ......               
  13.         }
  14. }
复制代码



如上代码所示,仅开启一个线程t1,之后就调用t1. join()时:线程t1会得到CPU执行权,t1执行结束后,再将执行权交还给主线程,t2开启后,主线程与t2交替执行。

  1. class JoinDemo
  2. {
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                 Join jo = new Join();
  6.                 Thread t1 = new Thread(jo);
  7.                 Thread t2 = new Thread(jo);               
  8.                 t1.start();
  9.                 t2.start();
  10.                 t1.join();                //主线程将CPU执行权交给线程t1
  11.                                              //此时t1、t2都有执行资格,它们会随机交替执行
  12.                                              //t1运行结束后再将执行术交还给主线程
  13.                 ......               
  14.         }
  15. }
复制代码
如果t1t2都开启,再调用t1. join():主线程将执行权交给t1,此时由于t1、t2都有执行资格,则两线程会随机交替执行。当t1运行结束后,将执行权交还给主线程。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马