Java使用synchronized實現互斥鎖功能示例
阿新 • • 發佈:2020-05-14
本文例項講述了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程式設計有所幫助。