60、死鎖
阿新 • • 發佈:2018-12-22
死鎖問題
在編寫多執行緒程式碼時一定要注意避免死鎖,發生死鎖原因就是兩個或多個執行緒都在等待對方釋放鎖導致,下面通過程式碼來演示一下死鎖情況。
package com.sutaoyu.DeadThread; public class DeadThread { private static Object obj1 = new Object(); private static Object obj2 = new Object(); public static void main(String[] args) { Thread t1 = newThread() { public void run() { synchronized(obj1) { System.out.println(this.getName() + "======obj1"); synchronized(obj2) { System.out.println(this.getName() + "======obj2"); } } } }; Thread t2= new Thread() { public void run() { synchronized(obj1) { System.out.println(this.getName() + "======obj1"); synchronized(obj2) { System.out.println(this.getName() + "======obj2"); } } } }; t1.start(); t2.start(); } }
上面使用了同步程式碼巢狀來演示了死鎖,實際開發中不僅是這種巢狀才會發生死鎖,所以一定要注意避免。