當前位置:首頁 » 編程語言 » java什麼是線程安全

java什麼是線程安全

發布時間: 2023-09-13 17:45:05

java中如何保證線程安全性

線程安全主要在體現在這三個方面:
1.原子性:提供互斥訪問,同一時刻只能有一個線程對數據進行操作,(atomic,synchronized);
2.可見性:一個線程對主內存的修改可以及時地被其他線程看到,(synchronized,volatile);
3.有序性:一個線程觀察其他線程中的指令執行順序,由於指令重排序,該觀察結果一般雜亂無序,(happens-before原則)。
所以想保證線性安全的話只要從這三個方面入手就可以了。

❷ java中哪些線程安全

JAVA中線程安全的map有:Hashtable、synchronizedMap、ConcurrentHashMap。
java中map中線程安全怎麼實現:
1、同步的map就是Hashtable, concurrenthashmap。
2、你看到的Hashtable就是直接在hashmap上加了個鎖,concurrenthashmap就是分成多個分段鎖。
java代碼中線程安全級別:
1、絕對線程安全。
在任何環境下,調用者都不需要考慮額外的同步措施,都能夠保證程序的正確性。這個定義要求很嚴格,java裡面滿足這個要求的類比較少,對於實現jsr133規范(java內存模型)的jdk(一般指jdk5.0之上),一般的不變類都是滿足絕地線程安全的。比如 String,Integer類。一般情況下,定義了如果一個類裡面所有欄位都是final類型的,一般都認為這個類是不變的。不變類都是絕對線程安全的。
2、相對線程安全
在一般情況下,調用者都不需要考慮線程同步,大多數情況下,都能夠正常運行。jdk裡面大多數類都是相對安全的。最常見的例子是java裡面Vector類。

❸ java里線程安全是什麼意思有什麼作用

比如說,兩個線程操作同一個ArrayList變數,那麼一個線程這一時刻讀的數據可能在下一刻要改變。

一般在類似於下面的情景下考慮線程安全的問題:

ArrayList procts=new ArrayList ();
procts用來存放生產出來的產品。
現在假設:有3個消費者線程,2個生產者線程。
每個生產者線程生產出一個產品,執行
procts.add(new Proct());
每個消費者線程消費一個產品執行
if(procts.size()>=1){ procts.remove(0);}

如果procts里現在只有一個產品可以消費,但是有2個消費者線程請求消費,那麼就有可能出現一個產品被同時消費的問題,而這是和實際不符的。

但是不同的線程訪問Vector的時候不會發生這種錯誤,因為java會有相應的機制是同一時刻只有一個線程對這個變數操作。

這就是所謂的:
Vector:是線程安全的
ArrayList:不是線程安全的

熱點內容
ps樣式在的文件夾 發布:2025-03-10 20:50:07 瀏覽:612
圖像壓縮編碼演算法 發布:2025-03-10 20:48:23 瀏覽:384
墮落解壓縮碼 發布:2025-03-10 20:46:55 瀏覽:624
做影視網站用什麼伺服器 發布:2025-03-10 20:44:51 瀏覽:259
oracle調用存儲過程語法 發布:2025-03-10 20:39:56 瀏覽:982
ps圖層樣式文件夾 發布:2025-03-10 20:38:05 瀏覽:410
php冪 發布:2025-03-10 20:38:04 瀏覽:915
壓縮褲性感 發布:2025-03-10 20:24:34 瀏覽:762
光遇安卓服為什麼注銷不了賬號 發布:2025-03-10 20:24:28 瀏覽:585
shell腳本教程視頻 發布:2025-03-10 20:05:45 瀏覽:61