就是線程同步的意思,就是當一個程序對一個線程安全的方法或者語句進行訪問的時候,其他的不能再對他進行操作了,必須等到這次訪問結束以后才能對這個線程安全的方法進行訪問 什么叫線程安全: 如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是 ...
經常看到一些類,有的說線程安全,有的說線程不安全,頓時懵逼。 線程安全不安全,主要是在多線程執行的情況下,如果由於線程之間搶占資源而造成程序的bug即為線程不安全,下面就拿arraylist 和Vector來舉個例子: 這里的arraylist 是線程不安全的,Vector是線程安全的 package Thread import java.util.List import java.util.co ...
2016-08-29 23:12 0 3914 推薦指數:
就是線程同步的意思,就是當一個程序對一個線程安全的方法或者語句進行訪問的時候,其他的不能再對他進行操作了,必須等到這次訪問結束以后才能對這個線程安全的方法進行訪問 什么叫線程安全: 如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是 ...
當我們查看JDK API的時候,總會發現一些類說明寫着,線程安全或者線程不安全,比如說到StringBuilder中,有這么一句,“將StringBuilder 的實例用於多個線程是不安全的。如果需要這樣的同步,則建議使用StringBuffer。”,提到StringBuffer時,說到 ...
先來看看HashMap.put方法的源代碼 如果有兩個線程A和B,都進行插入數據,剛好這兩條不同的數據經過哈希計算后得到的哈希碼是一樣的,且該位置還沒有其他的數據。所以這兩個線程都會進入我在上面標記為1的代碼中。假設一種情況,線程A通過if判斷,該位置沒有哈希沖突 ...
我們經常聽到程序是不是多線程的、具備不具備線程安全。那什么是線程呢?怎樣算是線程安全呢?我們一起來了解一下吧! 什么是線程? 每個正在系統上運行的程序都是一個進程。每個進程包含一到多個線程。進程也可能是整個程序或者是部分程序的動態執行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里 ...
1、resize機制 HashMap的擴容機制就是重新申請一個容量是當前的2倍的桶數組,然后將原先的記錄逐個重新映射到新的桶里面,然后將原先的桶逐個置為null使得引用失效。后面會講到,HashMap之所以線程不安全,就是resize這里出的問題 ...
線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其他線程不能進行訪問直到該線程讀取完,其他線程才可使用。不會出現數據不一致或者數據污染。 線程不安全就是不提供數據訪問保護,有可能出現多個線程先后更改數據造成所得到的數據是臟數據 ...
進程和線程: 1)進程是靜態的,其實就是指開啟的一個程序;而線程是動態的,是真正執行的單元,執行的過程。其實我們平時看到的進程,是線程在執行着,因為線程是作為進程的一個單元存在的。 2)同樣作為基本的執行單元,線程是划分得比進程更小的執行單位。 3)每個進程都有一段專用的內存區域。與此相反 ...
目錄1. 常見集合2.什么叫“集合是線程不安全的”3. 線程安全和線程不安全的集合4. 如何綜合考慮線程不安全和效率低的問題 1. 常見集合這里自己總結了一些比較常見的java集合,對於這些集合的特點和區別后期博客中會進行總結介紹: 2.什么叫“集合是線程不安全的”首先我們來了 ...