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:2i:3線程Thread-1進入睡眠狀態線程Thread-1睡眠結束i:4
分析
在thread1休眠之后,thread2沒有立即執行,因為給object加了synchronized。
更多java相關內容感興趣的讀者可查看本站專題:《Java進程與線程操作技巧總結》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章:
1. springboot的yml配置文件通過db2的方式整合mysql的教程2. Python TestSuite生成測試報告過程解析3. python3實現往mysql中插入datetime類型的數據4. python爬蟲實戰之制作屬于自己的一個IP代理模塊5. 簡述JAVA同步、異步、阻塞和非阻塞之間的區別6. 解決AJAX返回狀態200沒有調用success的問題7. 在JSP中使用formatNumber控制要顯示的小數位數方法8. moment轉化時間戳出現Invalid Date的問題及解決9. 利用php來自動調用不同服務器上的flash10. 利用單元測試對PHP代碼進行檢查
