執行緒安全就是說多執行緒訪問同一**,不會產生不確定的結果。編寫執行緒安全的**是依靠執行緒同步。
在多執行緒環境中,當各執行緒不共享資料的時候,那麼一定是執行緒安全的。問題是這種情況並不多見,在多數情況下需要共享資料,這時就需要進行適當的同步控制了。
執行緒安全一般都涉及到synchronized 就是一段**同時只能有乙個執行緒來操作 不然中間過程可能會產生不可預製的結果
如果你的**所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段**。如果每次執行結果和單執行緒執行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是執行緒安全的。
使用執行緒同步機制:給讀寫操作同時加鎖,使得同時只有乙個執行緒可以訪問共享資料。如果單單給寫操作加鎖,同時只有乙個執行緒可以執行寫操作,而讀操作不受限制,允許多執行緒併發讀取,這時就可能出現不可重複讀的情況,如乙個持續時間比較長的讀執行緒,相隔較長時間讀取陣列同一索引位置的資料,正好在這兩次讀取的時間內,乙個執行緒修改了該索引處的資料,造成該執行緒從同一索引處前後讀取的資料不一致。是同時給讀寫加鎖,還是只給寫加鎖,根據具體需求而定。同步機制的缺點是降低了程式的吞吐量
Java執行緒安全和非執行緒安全
arraylist是非執行緒安全的,vector是執行緒安全的 hashmap是非執行緒安全的,hashtable是執行緒安全的 stringbuilder是非執行緒安全的,stringbuffer是執行緒安全的 什麼是執行緒安全?執行緒安全和非執行緒安全有什麼區別?分別在什麼情況下使用?非執行緒安...
java執行緒安全退出
在多執行緒程式設計中,某些情況下,主線程需要等待子執行緒安全退出後,主線程在繼續執行。為了實現這個效果,我借助thread類isalive 方法來實現。isalive 方法是判斷執行緒是否是活躍狀態。以下是實現 class test 類是主線程。class processaccept 類是子執行緒。...
Java多執行緒之執行緒安全
當多個執行緒訪問某乙個類 物件或方法時 這個類始終都能表現出正確的行為,那麼這個類 物件或方法 就是執行緒安全的。public class mythread extends thread public static void main string args 結果如下 t1正在執行 4 t1正在執行...