日出星辰

          解決Join方法的疑惑

           很長時間對join方法感到疑惑,不明白到底是誰要阻塞,誰要繼續執行(線程這部分亟需加強)。今天和一網友交流后疑惑得到解決,在此表示感謝Stephen_Liu。

           假如在main方法中有個線程A,執行了A.join(),那么線程A繼續執行,而main線程這阻塞在A.join()處,直到線程A執行完畢并正常退出,此時main方法中的A.join()才返回,然后繼續執行A.join()后面的代碼。

          public class ThreadJoin extends Thread {
          public static int n = 0;

          static synchronized void inc() {
          n
          ++;
          }

          public void run() {
          try {
          for (int i = 0; i < 10; i++) {
          inc();
          sleep(
          3);
          }
          }
          catch (InterruptedException e) {
          e.printStackTrace();
          }
          }

          public static void main(String[] args) throws Exception {
          Thread thread[]
          = new Thread[100];
          for (int i = 0; i < thread.length; i++) {
          thread[i]
          = new ThreadJoin();
          }
          for (int i = 0; i < thread.length; i++) {
          thread[i].start();
          }
          for (int i = 0; i < thread.length; i++) {
          thread[i].join();
          //不使用這句話n是個隨機數,使用n=1000
          }
          System.out.println(
          "n=" + ThreadJoin.n);
          }
          }

           

           

          posted on 2011-08-23 20:57 日出星辰 閱讀(62) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 大名县| 临江市| 乐至县| 读书| 白水县| 龙海市| 兴和县| 卫辉市| 白银市| 龙泉市| 新野县| 德钦县| 台东县| 伊通| 潞城市| 海淀区| 阜城县| 竹北市| 托克逊县| 博客| 岑巩县| 江都市| 荃湾区| 安乡县| 安徽省| 措勤县| 大安市| 富宁县| 龙泉市| 清水县| 宁海县| 双桥区| 米泉市| 巴彦县| 临武县| 柳江县| 涿州市| 诸暨市| 庆云县| 东明县| 浏阳市|