就是線程同步的意思,就是當一個程序對一個線程安全的方法或者語句進行訪問的時候,其他的不能再對他進行操作了,必須等到這次訪問結束以后才能對這個線程安全的方法進行訪問 什么叫線程安全: 如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是 ...
我們經常聽到程序是不是多線程的 具備不具備線程安全。那什么是線程呢 怎樣算是線程安全呢 我們一起來了解一下吧 什么是線程 每個正在系統上運行的程序都是一個進程。每個進程包含一到多個線程。進程也可能是整個程序或者是部分程序的動態執行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨立執行。也可以把它理解為代碼運行的上下文。所以線程基本上是輕量級的進程,它負責在單個程序里執行多任務。通常由操 ...
2012-04-17 16:01 5 2898 推薦指數:
就是線程同步的意思,就是當一個程序對一個線程安全的方法或者語句進行訪問的時候,其他的不能再對他進行操作了,必須等到這次訪問結束以后才能對這個線程安全的方法進行訪問 什么叫線程安全: 如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是 ...
當我們查看JDK API的時候,總會發現一些類說明寫着,線程安全或者線程不安全,比如說到StringBuilder中,有這么一句,“將StringBuilder 的實例用於多個線程是不安全的。如果需要這樣的同步,則建議使用StringBuffer。”,提到StringBuffer時,說到 ...
先來看看HashMap.put方法的源代碼 如果有兩個線程A和B,都進行插入數據,剛好這兩條不同的數據經過哈希計算后得到的哈希碼是一樣的,且該位置還沒有其他的數據。所以這兩個線程都會進入我在上面標記為1的代碼中。假設一種情況,線程A通過if判斷,該位置沒有哈希沖突 ...
1、resize機制 HashMap的擴容機制就是重新申請一個容量是當前的2倍的桶數組,然后將原先的記錄逐個重新映射到新的桶里面,然后將原先的桶逐個置為null使得引用失效。后面會講到,HashMap之所以線程不安全,就是resize這里出的問題 ...
目錄1. 常見集合2.什么叫“集合是線程不安全的”3. 線程安全和線程不安全的集合4. 如何綜合考慮線程不安全和效率低的問題 1. 常見集合這里自己總結了一些比較常見的java集合,對於這些集合的特點和區別后期博客中會進行總結介紹: 2.什么叫“集合是線程不安全的”首先我們來了 ...
經常看到一些類,有的說線程安全,有的說線程不安全,頓時懵逼。 線程安全不安全,主要是在多線程執行的情況下,如果由於線程之間搶占資源而造成程序的bug即為線程不安全,下面就拿arraylist 和Vector來舉個例子: 這里的arraylist 是線程不安全的,Vector是線程安全 ...
作者:developer http://cnblogs.com/developer_chan/p/10450908.html 我們都知道HashMap是線程不安全的,在多線程環境中不建議使用,但是其線程不安全主要體現在什么地方呢,本文將對該問題進行解密。 1、jdk1.7中 ...
1、put的時候導致的多線程數據不一致。 這個問題比較好想象,比如有兩個線程A和B,首先A希望插入一個key-value對到HashMap中,首先計算記錄所要落到的桶的索引坐標,然后獲取到該桶里面的鏈表頭結點,此時線程A的時間片用完了,而此時線程B被調度得以執行,和線程A一樣執行,只不過線程 ...