1. 程式人生 > >60、死鎖

60、死鎖

死鎖問題

在編寫多執行緒程式碼時一定要注意避免死鎖,發生死鎖原因就是兩個或多個執行緒都在等待對方釋放鎖導致,下面通過程式碼來演示一下死鎖情況。

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 = new
Thread() { 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(); } }

上面使用了同步程式碼巢狀來演示了死鎖,實際開發中不僅是這種巢狀才會發生死鎖,所以一定要注意避免。