Java 学习之路 之 控制线程(七十五)

wwwjlcjava. org
第16章多线程
>>1 6.4.1join线程
    Thread提供了让一个线程等待另一个线程完成的方法-join0方法。当在某个程序执行流中调用
其他线程的join0方法时,调用线程将被阻塞,直到被join0方法加入的join线程执行完为止。
  join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程。
当所有的小问题都得到处理后,再调用主线程来进一步操作。
    程序清单:code8\16\16.4UoinThread.java
public class JoinThread extends Thread
(
    //提供一个有参数的构造嚣,用于设置该线程的名字
    public JoinThread(String name)
    l
    super (name),
    }
    //莺写run(}方法,定义线程执行体
    public void  run()
    I
    for (int i一0;  i<100  ;  i++)
    (
    System.out,println <getName()  +一  一+i》7
    )
    l
    public static void main<StringIJ args)throws Exception
    I
    //启动子线程
    new JoinThread(”毒钧姨;程”).start()≯
    for (int i景0;  i<100  ;  i++  )
    I
    if  (i t一20)
    {
    JoinThread jt—new JoinThread("被Join的线器¨),
    jt*start C);
    //main线程调用了jt线程的join()方法,main线程
    //必须等jt执行结束才会向下执行
    ,t.,ohl'7
    l
    System*out.println (Thread.currentThread l).getName()
    +¨  “+i);
    }
    }
}
    上面程序中一共有3个线程,主方法开始时就启动了名为“新线程”的子线程,该子线程将会和
main线程推发执行。当主线程的循环变量i等于20时t启动了名为“被Join的线程”的线程,该线程
不会和main线程并发执行.main线程必须等该线程执行结束后才可以向下执行。在名为“被Join的线
程一的线程执行时,实际上只有2个子线程并发执行,而
主线程处于等待状态。运行上面程序,.会看到如图1—6.5所
    -    -
示的运行效果。一
    从图16.5中,盱以看出,主线程执行到i:一20时启动,
并join了名为“被Join-的线程”-的线程卜所以主线程将一
直处于阻塞状态,直到名为“被Join昀线程”的线程执行
完成。
  join0方法有如-下3种重载形式。
'oin的缝X
'oin誊鲮程
oin的鲮程
oin的线程
oin的娩程
oinl战程
oin的线经
oinht线爱
ln  22
ln 23
92
93

95
96
    ..___-_--._..______-.1.________--_-一
97    ttjo蛐竣■-执行完废
98_囊才tt露执行
∞‘’‘’’‘‘‘一
—J
》jofn():等徒被join的线程执行完成。    圈16.S主线程等待join线程的效果
> jom(long millis):等德--join的线程的时间最长为millis毫秒。如果在millis毫秒内-被joIn的线
  程还没有执行结束k则不再等待。
> join(longmillis,int-nanos-):等待被join的线程的时间最长为millis毫秒加nanos毫微秒。
●7J9

瘕托
JaVai似(第2版)
    痰狂软件教育
..-.--..._-_-...___--.-_-.-..-_-L-...___I....___..-.__-.-..---..._-.-.-.___...._-—-’...--_.-._-‘_I
    -‘
常我们很少使用第3种形式的方法,原因有两个:程序对时间的精度无须精确到毫  I
计算机硬件。操作系统本身也无法精确到毫微秒.
.._-.一..-—-.-.---...._-.-..._.’-....-__..1._....._--..-.-_-.-.--.I.-.-___....___-..--._一...-._-
    >>1 6.4.2  后台线程
    .    .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值