zoukankan      html  css  js  c++  java
  • Java多线程初学者指南(5):join方法的使用

     在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。下面的代码演示了join的用法

     1 package com.fly.join;
     2 
     3 public class JoinThread extends Thread {
     4     public static int n = 0;
     5 
     6     static synchronized void inc() {
     7         n++;
     8     }
     9 
    10     public void run() {
    11         for (int i = 0; i < 10; i++)
    12             try {
    13                 inc();
    14                 sleep(3); // 为了使运行结果更随机,延迟3毫秒
    15 
    16             } catch (Exception e) {
    17             }
    18     }
    19 
    20     public static void main(String[] args) throws Exception {
    21 
    22         Thread threads[] = new Thread[100];
    23         for (int i = 0; i < threads.length; i++)
    24             // 建立100个线程
    25             threads[i] = new JoinThread();
    26         for (int i = 0; i < threads.length; i++)
    27             // 运行刚才建立的100个线程
    28             threads[i].start();
    29         
    30         System.out.println("args.length="+args.length);
    31         if (args.length > 0)
    32             for (int i = 0; i < threads.length; i++)
    33                 // 100个线程都执行完后继续
    34                 threads[i].join();
    35         System.out.println("n=" + JoinThread.n);
    36     }
    37 
    38 }

    建立了100个线程,每个线程使静态变量n增加10。如果在这100个线程都执行完后输出n,这个n值应该是1000。

    测试1: 上面运行的结果为不确定值,但是一般不等于1000。  因为并不是所有线程都运行完了,才执行最后的打印“n=" +JoinThread.n

    测试2: 将31行代码修改为:args.length >= 0,  则结果输出一定为:1000.   即所有线程都执行完了才执行最后的打印“n=" +JoinThread.n

  • 相关阅读:
    清除页面广告?身为前端,自己做一款简易的Chrome扩展吧
    Nginx 引入线程池,提升 9 倍性能
    调试时屏蔽JavaScript库代码 –Chrome DevTools Blackbox功能介绍
    收集的React.JS资料
    谈谈 React.js 的核心入门知识
    同时包含字母和数字的正则表达式
    Word2010撤销按钮失效,Ctrl+Z失效解决办法
    大数据于产业金融领域的运用究竟如何很好的实现
    HTTP 错误 500.19
    WindowsServer2012桌面图标设置
  • 原文地址:https://www.cnblogs.com/dragonflyyi/p/3538488.html
Copyright © 2011-2022 走看看