導航:首頁 > 編程語言 > java創建線程安全的集合

java創建線程安全的集合

發布時間:2022-01-19 17:52:12

1. java哪些集合類是線程安全的

在集抄合框架中,有些類是線程安全的襲,這些都是jdk1.1中的出現的。在jdk1.2之後,就出現許許多多非線程安全的類。 下面是這些線程安全的同步的類:
vector:就比arraylist多了個同步化機制(線程安全),因為效率較低,現在已經不太建議使用。在web應用中,特別是前台頁面,往往效率(頁面響應速度)是優先考慮的。
statck:堆棧類,先進後出
hashtable:就比hashmap多了個線程安全
enumeration:枚舉,相當於迭代器
除了這些之外,其他的都是非線程安全的類和介面。
線程安全的類其方法是同步的,每次只能一個訪問。是重量級對象,效率較低。
其他:
1. hashtable跟hashmap的區別
hashtable是線程安全的,即hashtable的方法都提供了同步機制;hashmap不是線程安全的,即不提供同步機制 ;hashtable不允許插入空值,hashmap允許!

2. java線程安全的集合還要加鎖嗎

線程安全是指要控制多個線程對某個資源的有序訪問或修改,而在這些線程之間沒有產生沖突。 在Java里,線程安全一般體現在兩個方面: 1、多個thread對同一個java實例的訪問(read和modify)不會相互干擾,它主要體現在關鍵字synchronized。

3. Java中怎樣創建線程安全的方法

很簡單的代碼如下:
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static synchronized Singleton getInstance(){
if (instance == null) instance = new Singleton();
return instance;
}
}

4. Java線程安全,集合類練習

你是要長度為10的 隊列吧?
刪除在頭部,相當於出棧

那不就是先進先出么? --隊列?

然後給你搞一個多線程隊列就ok了 --------------
/**
* 容量為10的 隊列,多線程,線程要安全
* 容器為 集合,我選用linkedList,因為add 和 del 比較多,沒說select的情況
* 內部元素為int、
*
* 其實這東西 底層用數組最好。一下就可以控制lenght
* @author wangfulin
*/
public class T {

public static Q q;
private _Add add = new _Add();
private _Del del = new _Del();

public static void main(String[] args) {

int time = 200;// 運行次數
for (int i = 0; i < time; i++) {
q = Q.getInstance();
new T().getAdd().start();
new T().getDel().start();
q.getSize();
}
// 備注,最後如果剩餘數目不是0,那肯定是先執行的del()方法
//也就是說,一開始就列印 對應個數的 0 !
//覺得好,分給我啊!要不我傷心啊
}

_Add getAdd() {
return new _Add();
}
_Del getDel() {
return new _Del();
}

// 模擬調用對象
class _Add extends Thread {
public void run() {
Q.getInstance().add(1);
}
}
class _Del extends Thread {
public void run() {
Q.getInstance().del();

}
}
}
/**
* 多線程就要單例唄
* @author wangfulin
*/
class Q {
public static List list = new LinkedList();
public static Q q = new Q();
private Q() {}
public static Q getInstance() {
return q;
}
public void add(int i) {
synchronized (this) {
while(list.size() >= 10) {
del();
}
list.add(i);//這里保證了,最多不過10個
}
}
public void del() {
synchronized (this) {
if (list.size() == 0) {
return;
}
list.remove(list.size() - 1);
}
}
public void getSize() {
System.out.println(list.size());
}
}

5. 創建一個線程安全的set集合

可以利用Collections工具類的synchronizedSet方法修飾一個非同步的Set變成同步Set

Set<T>set=newHashSet<T>();//非同步,非線程安全的Set
Set<T>syncSet=Collections.synchronizedSet(set);//返回了一個線程安全的Set

6. Java集合中哪些類是線程安全的

線程安全類

在集合框架中,有些類是線程安全的,這些都是jdk1.1中的出現的。在jdk1.2之後,就出現許許多多非線程安全的類。 下面是這些線程安全的同步的類:

vector:就比arraylist多了個同步化機制(線程安全),因為效率較低,現在已經不太建議使用。在web應用中,特別是前台頁面,往往效率(頁面響應速度)是優先考慮的。

statck:堆棧類,先進後出

hashtable:就比hashmap多了個線程安全

enumeration:枚舉,相當於迭代器

除了這些之外,其他的都是非線程安全的類和介面。

線程安全的類其方法是同步的,每次只能一個訪問。是重量級對象,效率較低。

其他:

1. hashtable跟hashmap的區別

hashtable是線程安全的,即hashtable的方法都提供了同步機制;hashmap不是線程安全的,即不提供同步機制 ;hashtable不允許插入空值,hashmap允許!

2. 多線程並發修改一 個 集合 怎麼辦

用老的Vector/Hashtable類

StringBuffer是線程安全,而StringBuilder是線程不安全的。對於安全與不安全沒有深入的理解情況下,易造成這樣的錯覺,如果對於StringBuffer的操作均是線程安全的,然而,Java給你的保證的線程安全,是說它的方法是執行是排它的,而不是對這個對象本身的多次調用情況下,還是安全的。看看下邊的例子,在StringBufferTest中有一個數據成員contents它是用來擴展的,它的每一次append是線程安全的,但眾多次append的組合並不是線程安全的,這個輸出結果不是太可控的,但如果對於log和getContest方法加關鍵字synchronized,那麼結果就會變得非常條理,如果換成StringBuider甚至是append到一半,它也會讓位於其它在此基礎上操作的線程:

7. 有個關於java集合和線程安全的問題想請教下各位大神。。

Vector Hashtable是線程安全的,Arraylist和Hashmap是不安全的,盡量用線程安全的類,要不然就加鎖……

8. java集合類中哪些是線程安全的

一些歷史類的一般是線程安全的,例如:Vector,HashTable等
在jdk升級後,出現了替代一些集合的類,ArrayList,HashMap等,一般都是線程不安全的。

9. java線程安全的集合不能保證線程安全

理論上來說你的proct list應該是線程安全的,你把你的代碼貼出來看看唄,看看你是怎麼操作proct,又是如何出現數據不一致的

閱讀全文

與java創建線程安全的集合相關的資料

熱點內容
反映女中介和客戶的台灣電影 瀏覽:341
網路技術專業前景 瀏覽:108
韓國古裝電影 床戲 瀏覽:933
哈薩克電影全集免費 瀏覽:405
韓國電影比尿尿尿的遠 瀏覽:340
一部悲傷的電影用英語怎麼說 瀏覽:303
大數據的論壇有哪些 瀏覽:854
筆記本沒網路怎麼上網 瀏覽:518
國產 電影區 小說區 圖片 瀏覽:379
滴滴app怎麼支付 瀏覽:832
沒有u盤怎麼列印店裡面的文件 瀏覽:134
css兼容性工具 瀏覽:757
任帥和檳榔妹妹的愛情故事啥電影 瀏覽:633
還有一個p開頭的網站 瀏覽:275
中央新下達文件50個省 瀏覽:613
銅仁網站製作多少錢 瀏覽:991
電影14路末班車免費觀看 瀏覽:665
ak愛看福利電影院 瀏覽:438
配置文件的工具 瀏覽:886

友情鏈接