什麼是執行緒安全 死鎖

2021-09-28 23:59:13 字數 285 閱讀 5339

1、執行緒安全

每個程序都會被系統分配一塊公共區域,該區域就是堆(記憶體),該程序的所有執行緒都能訪問該堆(記憶體)的資料,在不受限制的情況下存在被意外修改的風險,這就是執行緒安全。存在競爭的執行緒就是不安全的,不存在競爭的執行緒就是安全的。

2、死鎖

所謂死鎖是指多個併發執行緒因競爭系統資源而處於互相等待的現象。例如執行緒1鎖住了a,嘗試著對b進行加鎖,同時執行緒2鎖住了b,接著嘗試著對a進行加鎖,這時就死鎖產生了。執行緒1永遠得不到b,執行緒2永遠得不到a。為了同時獲取a、b,這兩個執行緒會一直處於阻塞狀態,這種情況就是一種死鎖。

什麼是執行緒的死鎖?

這種情況可能發生在當兩個執行緒嘗試獲取其他資源的鎖,而每個執行緒又陷入無線等待其他資源鎖的釋放,除非乙個使用者的程序被終止。執行緒死鎖可能發生在以下的情況 當兩個執行緒相互呼叫thread.join 當兩個執行緒使用巢狀的同步塊時,乙個執行緒占用了另乙個執行緒的必需的鎖,互相等待時被阻塞,就有可能出...

什麼是執行緒死鎖 如何避免死鎖

執行緒死鎖描述的是這樣一種情況 多個執行緒同時被阻塞,它們中的乙個或者全部都在等待某個資源被釋放。由於執行緒被無限期地阻塞,因此程式不可能正常終止。如下圖所示,執行緒 a 持有資源 2,執行緒 b 持有資源 1,他們同時都想申請對方的資源,所以這兩個執行緒就會互相等待而進入死鎖狀態。1.產生死鎖的四...

什麼是執行緒安全

如果你的 所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段 如果每次執行結果和 單執行緒執行的結果是一樣的,而且其他的 變數的值也和預期的是一樣的,就是執行緒安全的。或者說 乙個類或者程式所提供的介面對於執行緒來說是 原子操作或者多個執行緒之間的切換不會導致該介面的執行結果存在二義...