java something

          不要以為......很遙遠
          隨筆 - 23, 文章 - 1, 評論 - 2, 引用 - 0
          數據加載中……

          控制3個線程運行順序的Demo

          本程序可以控制3個線程按順序執行, 代碼如下:

          public class Test3 {

           public static void main(String[] args) throws IOException {
            final Test obj = new Test();
            
            new Thread()
            {
             public void run()
             {
              obj.m1();
             }
            }.start();
            new Thread()
            {
             public void run()
             {
              obj.m2();
             }
            }.start();
            new Thread()
            {
             public void run()
             {
              obj.m3();
             }
            }.start();
            
           }

          }

          class Test
          {
           static int count;
           volatile int target = 1;
           synchronized void m1()
           { 
             for (int i = 0; i < 10; i++)
             {
              while (target == 2 || target == 3)
              {
               try {
                wait();
               } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }
              }
              System.out.println("m1() =" + i);
              target = 2;
              notifyAll();
             }
           }
           
           synchronized void m2()
           {
            for (int i = 0; i < 10; i++)
            {
             while (target == 1 || target == 3)
             {
              try {
               wait();
              } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }
             }
             System.out.println("m2() =" + i);
             target = 3;
             notifyAll();
            }
           }
           
           synchronized void m3()
           {
            for (int i = 0; i < 10; i++)
            {
             while (target == 1 || target == 2)
             {
              try {
               wait();
              } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              }
             }
             System.out.println("m3() =" + i);
             target = 1;
             notifyAll();
            }
           }
          }

          posted on 2011-09-02 02:27 Jamie 閱讀(1779) 評論(2)  編輯  收藏 所屬分類: 多線程

          評論

          # re: 控制3個線程運行順序的Demo  回復  更多評論   

          類似于信號量.
          2012-08-10 23:24 | zxogj

          # re: 控制3個線程運行順序的Demo  回復  更多評論   

          用retrantLock 也可以把。
          2012-08-10 23:24 | zxogj
          主站蜘蛛池模板: 望奎县| 博湖县| 怀柔区| 文成县| 鹤岗市| 华坪县| 昭苏县| 凉城县| 唐河县| 新乡县| 新蔡县| 班戈县| 自贡市| 隆尧县| 河北区| 阿坝县| 临高县| 滕州市| 锡林浩特市| 洛隆县| 忻城县| 诸城市| 库车县| 徐闻县| 肥乡县| 双峰县| 克拉玛依市| 澳门| 绩溪县| 信宜市| 突泉县| 长顺县| 卢龙县| 章丘市| 治多县| 教育| 朝阳县| 阜南县| 九龙坡区| 广平县| 石楼县|