執行緒安全與不安全的集合
- Java集合框架主要包括Collection和Map兩種型別。其中Collection又有3種子型別,分別是List、Set、Queue。Map中儲存的主要是鍵值對對映。
- 規則集Set中儲存的是不重複的元素,線性表中儲存可以包括重複元素,Queue佇列描述的是先進後出的資料結構,可以用LinkedList來實現佇列。
- 效率上,規則集比線性表更高效。
- ArrayList主要是用陣列來儲存元素,LinkedList主要是用連結串列來儲存元素,HashMap的底層實現主要是藉助陣列+連結串列+紅黑樹來實現。
- Vector、HashTable、Properties等集合類效率比較低但都是執行緒安全的。包java.util.concurrent下包含了大量執行緒安全的集合類,效率上有較大提升。
- ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是執行緒不安全的。(執行緒不安全是指:當多個執行緒訪問同一個集合或Map時,如果有超過一個執行緒修改了ArrayList集合,則程式必須手動保證該集合的同步性。)
相關推薦
執行緒安全與不安全的集合
Java集合框架主要包括Collection和Map兩種型別。其中Collection又有3種子型別,分別是List、Set、Queue。Map中儲存的主要是鍵值對對映。 規則集Set中儲存的是不重複的元素,線性表中儲存可以包括重複元素,Queue佇列描述的是先進後出的資料結構,可以用LinkedList來
Vector 執行緒安全與不安全
下面這樣寫法是執行緒不安全的寫法 import java.util.Vector; public class Test { private static Vector<Integer> vector = new Vector<Integer>
Java執行緒學習(一):執行緒安全與不安全
作為一個Java web開發人員,很少也不需要去處理執行緒,因為伺服器已經幫我們處理好了。記得大一剛學Java的時候,老師帶著我們做了一個區域網聊天室,用到了AWT、Socket、多執行緒、I/O,編寫的客戶端和伺服器,當時做出來很興奮,回學校給同學們演示,感覺自己好NB
對Java執行緒安全與不安全的理解
當我們檢視JDK API的時候,總會發現一些類說明寫著,執行緒安全或者執行緒不安全,比如說到StringBuilder中,有這麼一句,“將StringBuilder 的例項用於多個執行緒是不安全的。
多執行緒環境下不安全的訊息佇列存取---執行緒不同步會造成隱患
前面, 我們把訊息佇列存取都放在主執行緒中, 而在實際應用中, 很多時候, 存訊息佇列在主執行緒, 取訊息佇列在其他執行緒(如網路執行緒)。 下面, 我們將之前的程式改為多執行緒程式: #include <windows.h> #include
libcurl多執行緒超時設定不安全(轉載)
from http://blog.csdn.net/sctq8888/article/details/10031219 (1), 超時(timeout) libcurl 是 一個很不錯的庫,支援http,ftp等很多的協議。使用庫最大的心得就是,不仔細看文件,僅僅看著
《 Java併發程式設計從入門到精通》Thread安全與不安全
作者:張振華 購買連結:天貓商城 JD商城 噹噹書店 鳥欲高飛先振翅,人求上進先讀書。本文是原書的第3章 Thread安全3.2 什麼是不執行緒安全。3.3什麼是執行緒不安全。 3.2 什麼是不安全? 當多個執行緒同時操作一個數據結構的時候產生了相互修改和序列的情況,沒有保證資料的
並行化時要注意的執行緒安全與任務安全
在序列程式設計時,操作都是按順序執行的,比如數字從1到100000遞增,就必然的是1、2、3、4……100000。程式碼如下 for (int i = 1; i <= 100000; i++) { Consol
執行緒安全與併發安全探究(一)
執行緒安全也可是說是併發安全。 在多執行緒環境下能正確執行的程式碼就是執行緒安全的程式碼。安全的意思就是說能正確執行,否則後面就是程式執行錯誤或者出現各種異常情況。 執行緒安全是指多執行緒訪問同一程式碼或者同一共享資料時,不會產生不確定的結果。編寫執行緒安全的程式碼依靠的是
程式設計思想之多執行緒與多程序(2)——執行緒優先順序與執行緒安全
《程式設計思想之多執行緒與多程序(1)——以作業系統的角度述說執行緒與程序》一文詳細講述了執行緒、程序的關係及在作業系統中的表現,這是多執行緒學習必須瞭解的基礎。本文將接著講一下執行緒優先順序和執行緒安全。 執行緒優先順序 現在主流作業系統(
java 執行緒安全和不安全
執行緒安全就是多執行緒訪問時,採用了加鎖機制,當一個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。(Vector,HashTab;le) 執行緒不安全就是不提供資
執行緒同步與執行緒安全
1執行緒同步 同步:多執行緒訪問臨界資源時,必須進行同步控制,多程序或者多執行緒的執行並不完全是絕對的並行執行,又可能主執行緒需要等待函式執行緒的某些條件的發生。 多執行緒的臨界資源有全域性資料,堆區資料,檔案描述符 同步控制方式: 1.1訊號量 需
Android知識架構 · 電話面試 · Android執行緒和程序以及安全問題
這篇文章介紹的幾個問題: 3、多執行緒 一 、程序和執行緒,以及區別 程序(Process):當一個程式進入記憶體執行時,即變成一個程序。程序是處於執行過程中的程式,是程式的一個執行例項。 程序是作業系統進行資源分配和排程的一個獨立
執行緒共享資料的安全問題和死鎖問題
多執行緒訪問共享變數的時候會出現執行緒安全的問題解決執行緒安全的問題:執行緒同步(同步程式碼塊、同步方法、同步鎖)1.同步程式碼塊synchronized(同步監視器){ //需要訪問的共享資料 } 同步監視器 : 俗稱“鎖”。可以使用任何物件充當。但是必須確定多個執
CVI多執行緒資料保護(安全佇列)
一個執行緒產生資料,加入安全佇列;一個執行緒顯示資料,讀取安全佇列。 #include <windows.h> #include <stdio.h> #include <utility.h> int CVICALLBACK Thre
windows核心程式設計之使用執行緒APC回撥安全退出多個等待執行緒
前言 程式開發中經常遇到需要這些情況:輔助執行緒正在等待核心物件的觸發,主執行緒需要強制終止輔助執行緒。我們常常做的就是使用:TerminateThread來強制終止執行緒。這樣做當然是不太好的,強制
java併發程式設計(對於執行緒內共享變數安全的思考)
上一篇部落格講解了,多個執行緒之間的互斥和同步的操作,一個是利用了鎖的技術;另一個內則是利用了Object的notify和wait來實現同步操作。這篇部落格呢,來談一下對於執行緒內變
從執行上下文角度重新理解.NET(Core)的多執行緒程式設計[3]:安全上下文
在前兩篇文章(《基於呼叫鏈的”引數”傳遞》和《同步上下文》)中,我們先後介紹了CallContext(IllogicalCallContext和LogicalCallContext)、AsyncLocal<T>和SynchronizationContext,它們都是執行緒執行上下文的一部分。本篇介
Java多執行緒學習與總結(Join)
join()方法的用法: join()是主執行緒 等待子執行緒的終止。也就是在子執行緒呼叫了 join() 方法後面的程式碼,只有等到子執行緒結束了才能執行。 例子如下: Java程式碼 p
Java多執行緒學習與總結(ThreadGroup)
在Java中每個執行緒都屬於某個執行緒組(ThreadGroup)。例如,如果在main()中產生一個執行緒,則這個執行緒屬於main執行緒組管理的一員,您可以使用下面的指令來獲得目前執行緒所屬的執行緒組名稱: Java程式碼