1. 程式人生 > >什麼是執行緒死鎖,如何解決

什麼是執行緒死鎖,如何解決

產生死鎖的條件有四個:

  1. 互斥條件:所謂互斥就是程序在某一時間內獨佔資源。 

  2. 請求與保持條件:一個程序因請求資源而阻塞時,對已獲得的資源保持不放。 

  3. 不剝奪條件:程序已獲得資源,在末使用完之前,不能強行剝奪。 

  4. 迴圈等待條件:若干程序之間形成一種頭尾相接的迴圈等待資源關係。

執行緒死鎖是因為多執行緒訪問共享資源,由於訪問的順序不當所造成的,通常是一個執行緒鎖定了一個資源A,而又想去鎖定資源B;在另一個執行緒中,鎖定了資源B,而又想去鎖定資源A以完成自身的操作,兩個執行緒都想得到對方的資源,而不願釋放自己的資源,造成兩個執行緒都在等待,而無法執行的情況。

要解決死鎖,可以從死鎖的四個條件出發,只要破壞了一個必要條件,那麼我們的死鎖就解決了。在java中使用多執行緒的時候一定要考慮是否有