日期:2011-01-26 02:54:00 来源:本站整理
Java多线程初学者指南(5):join办法的操纵[Java编程]
本文“Java多线程初学者指南(5):join办法的操纵[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在上面的例子中多次利用到了Thread类的join办法.我想大家大概已经猜出来join办法的功效是什么了.对,join办法的功效就是使异步履行的线程变成同步履行.也就是说,当调用线程实例的start办法后,这个办法会当即返回,假如在调用start办法后后需求利用一个由这个线程计算得到的值,就必须利用join办法.假如不利用join办法,就不能保证当履行到start办法背面的某条语句时,这个线程一定会履行完.而利用join办法后,直到这个线程退出,程序才会往下履行.下面的代码演示了join的用法.
package mythread; public class JoinThread extends Thread { public static volatile int n = 0; public void run() { for (int i = 0; i < 10; i++, n++) try { sleep(3); // 为了使运行后果更随机,耽误3毫秒 } catch (Exception e) { } } public static void main(String[] args) throws Exception { Thread threads[] = new Thread[100]; for (int i = 0; i < threads.length; i++) // 成立100个线程 threads[i] = new JoinThread(); for (int i = 0; i < threads.length; i++) // 运行方才成立的100个线程 threads[i].start(); if (args.length > 0) for (int i = 0; i < threads.length; i++) // 100个线程都履行完后持续 threads[i].join(); System.out.println("n=" + JoinThread.n); } } |
在例程2-8中成立了100个线程,每个线程使静态变量n增添10.假如在这100个线程都履行完后输出n,这个n值应当是1000.
1. 测试1
利用以下的号令运行上面程序:
java mythread.JoinThread |
程序的运行后果以下:
n=442 |
这个运行后果大概在差别的运行环境下有一些差别,但普通n不会等于1000.从上面的后果可以必定,这100个线程并未都履行完就将n输出了.
2. 测试2
利用以下的号令运行上面的代码:
在上面的号令行中有一个参数join,其实在号令行中可以利用任何参数,只要有一个参数便可以,这里利用join,只是为了表明要利用join办法使这100个线程同步履行.
程序的运行后果以下:
n=1000 |
无论在什么样的运行环境下运行上面的号令,城市得到相同的后果:n=1000.这充分阐明了这100个线程必定是都履行完了,因此,n一定会等于1000.
以上是“Java多线程初学者指南(5):join办法的操纵[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论