初學者線程練習關於非同步和同步

來源:互聯網
上載者:User

package com.fish.thread;

 

publicclass Test22 {

publicstaticvoid main(String[] args) {

    Inc inc=new Inc(0);

    Dec dec=new Dec(1);

    for(
int i=0;i<2;i++){

        new Thread(inc).start();

        new Thread(dec).start();

    }

}

}

 class Inc
implements Runnable{

     int j=10;

     Object mutex;

     public Inc(Object mutex) {

        this.mutex = mutex;

    }

    @Override

    publicvoid run() {

        //
TODO Auto-generated method stub

         synchronized (mutex) {

           

   

         for(int i=10;i>0;i--){

             System.out.println(Thread.currentThread().getName()+"*******j="+j--);

         }

         

         }

    }

 }

 class Dec
implements Runnable{

     int j=10;

     Object mutex;

     

     public Dec(Object mutex) {

        this.mutex = mutex;

    }

 

    @Override

     publicvoid run() {

         //
TODO Auto-generated method stub

         synchronized (mutex) {

           

       

         for(int i=10;i>0;i--){

             System.out.println(Thread.currentThread().getName()+"&&&j="+j++);

         }

         }

         

     }

 }

 

Thread-0*******j=10

Thread-0*******j=9

Thread-0*******j=8

Thread-1&&&j=10

Thread-0*******j=7

Thread-1&&&j=11

Thread-0*******j=6

Thread-0*******j=5

Thread-0*******j=4

Thread-1&&&j=12

Thread-0*******j=3

Thread-1&&&j=13

Thread-0*******j=2

Thread-1&&&j=14

Thread-0*******j=1

Thread-1&&&j=15

Thread-1&&&j=16

Thread-2*******j=0

Thread-1&&&j=17

Thread-2*******j=-1

Thread-2*******j=-2

Thread-2*******j=-3

Thread-2*******j=-4

Thread-2*******j=-5

Thread-2*******j=-6

Thread-2*******j=-7

Thread-2*******j=-8

Thread-2*******j=-9

Thread-1&&&j=18

Thread-1&&&j=19

Thread-3&&&j=20

Thread-3&&&j=21

Thread-3&&&j=22

Thread-3&&&j=23

Thread-3&&&j=24

Thread-3&&&j=25

Thread-3&&&j=26

Thread-3&&&j=27

Thread-3&&&j=28

Thread-3&&&j=29

這個說明t0,t2是同步的,資源也是gx。這兩個為一組,另外兩個為另一組,兩組之間是非同步。

同步的標誌就是1一個執行,另一個必須等待。

用runnable的好處是可以實現資源資源共用。不是說thread不能是實現資源共用。只是runnable更好。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.