当前位置:天才代写 > tutorial > JAVA 教程 > Java多线程初学者指南(5):join要领的利用

Java多线程初学者指南(5):join要领的利用

2017-11-12 08:00 星期日 所属: JAVA 教程 浏览:296

在上面的例子中多次利用到了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。

 

    关键字:

天才代写-代写联系方式