1. 程式人生 > 程式設計 >Java使用synchronized實現互斥鎖功能示例

Java使用synchronized實現互斥鎖功能示例

本文例項講述了Java使用synchronized實現互斥鎖功能。分享給大家供大家參考,具體如下:

程式碼

package per.thread;
 
import java.io.IOException;
 
public class Test {
  
  private int i = 0;
  private Object object = new Object();
   
  public static void main(String[] args) throws IOException {
    
   Test test = new Test();
    
    Test.MyThread thread1 = test.new MyThread();
    Test.MyThread thread2 = test.new MyThread();
    thread1.start();
    thread2.start();
  } 
   
  class MyThread extends Thread{
    @Override
    public void run() {
      synchronized (object) {
        i++;
        System.out.println("i:"+i);
        try {
          System.out.println("執行緒"+Thread.currentThread().getName()+"進入睡眠狀態");
          Thread.currentThread().sleep(10000);
        } catch (InterruptedException e) {
          // TODO: handle exception
        }
        System.out.println("執行緒"+Thread.currentThread().getName()+"睡眠結束");
        i++;
        System.out.println("i:"+i);
      }
    }
  }
}

實現

i:1
執行緒Thread-0進入睡眠狀態
執行緒Thread-0睡眠結束
i:2
i:3
執行緒Thread-1進入睡眠狀態
執行緒Thread-1睡眠結束
i:4

分析

在thread1休眠之後,thread2沒有立即執行,因為給object加了synchronized。

更多java相關內容感興趣的讀者可檢視本站專題:《Java程序與執行緒操作技巧總結》、《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》

希望本文所述對大家java程式設計有所幫助。