java死鎖例項

2021-06-28 19:55:41 字數 655 閱讀 3358

在實際程式設計中,要盡量避免出現死鎖的情況,但是讓你故意寫乙個死鎖的程式時似乎也不太簡單,以下是乙個簡單的死鎖例子。

package dhp.test1;

/** *

* @author 鄧海波

* 當類的物件flag=1時(t1),先鎖定o1,睡眠500毫秒,然後鎖定o2;

* 而t1在睡眠的時候另乙個flag=0的物件(t2)執行緒啟動,先鎖定o2,睡眠500毫秒,等待t1釋放o1;

* t1睡眠結束後需要鎖定o2才能繼續執行,而此時o2已被t2鎖定;

* t2睡眠結束後需要鎖定o1才能繼續執行,而此時o1已被t1鎖定;

* t1、t2相互等待,都需要對方鎖定的資源才能繼續執行,從而死鎖。

*/public class testdeadlock implements runnable catch (interruptedexception e)

synchronized (o2)

}}

if(flag ==0) catch (interruptedexception e)

synchronized (o1)

}} }

public static void main(string args)

}

Java死鎖例項

併發程式設計是指多個執行緒同時進行,對同一資源進行操作,那麼就會產生併發問題。如何解決?可以用鎖。synchronized是最常用的,但是有時難免會出現死鎖的現象。下面就以乙個例項講解死鎖的過程 假定有乙個分布式微博工具,下面是其後台 在她的propagateupdate 方法被呼叫時,exampl...

Java 死鎖的簡單例項

雖然網上有各種關於死鎖的說法,但是卻沒有乙個實際的案例來闡述這個死鎖到底是什麼樣的 那麼這裡有乙個簡單的死鎖例項 執行緒t1需要先使用掃瞄器掃瞄檔案 再使用印表機列印檔案,之後工作完畢 執行緒t2需要先使用印表機列印檔案 再使用掃瞄器掃瞄檔案,之後工作完畢 如果是正常的工作秩序,那應該是t1先擁有掃...

java製造死鎖

package suo public class deadlocktest implements runnable catch exception e synchronized o2 if flag 1 catch exception e synchronized o1 public static ...