日出星辰

          解決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 日出星辰 閱讀(65) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 无棣县| 白沙| 法库县| 彭山县| 奎屯市| 汉川市| 台东县| 北碚区| 土默特右旗| 彭水| 黑山县| 句容市| 南平市| 桃江县| 布尔津县| 金华市| 凤阳县| 柘城县| 双辽市| 阿合奇县| 安顺市| 翁源县| 崇明县| 廊坊市| 托克逊县| 广饶县| 邯郸市| 桂东县| 汉沽区| 汝南县| 阿拉善盟| 浦县| 家居| 盱眙县| 大埔县| 道真| 南涧| 香港 | 江津市| 宝兴县| 武安市|