您好,登錄后才能下訂單哦!
在Java中,集合操作中的并發工具類主要用于在多線程環境下對集合進行安全、高效的操作。這些工具類位于java.util.concurrent
包中,提供了許多有用的并發集合和數據結構。以下是一些常用的并發工具類及其使用方法:
HashTable
和Collections.synchronizedMap()
,ConcurrentHashMap
具有更高的并發性能。import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
public static void main(String[] args) {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
// 啟動多個線程并發地向map中添加數據
for (int i = 0; i < 10; i++) {
new Thread(() -> {
for (int j = 0; j < 100; j++) {
map.put("key" + i + "-" + j, j);
}
}).start();
}
// 等待所有線程執行完畢
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 輸出map中的數據
map.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
import java.util.concurrent.CopyOnWriteArrayList;
public class CopyOnWriteArrayListExample {
public static void main(String[] args) {
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
// 啟動多個線程并發地向list中添加數據
for (int i = 0; i < 10; i++) {
new Thread(() -> {
for (int j = 0; j < 100; j++) {
list.add("item" + i + "-" + j);
}
}).start();
}
// 輸出list中的數據
list.forEach(System.out::println);
}
}
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class BlockingQueueExample {
public static void main(String[] args) {
BlockingQueue<String> queue = new LinkedBlockingQueue<>(10);
// 啟動一個生產者線程向隊列中添加數據
new Thread(() -> {
for (int i = 0; i < 20; i++) {
try {
queue.put("item" + i);
System.out.println("Produced: item" + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
// 啟動一個消費者線程從隊列中獲取數據
new Thread(() -> {
for (int i = 0; i < 20; i++) {
try {
String item = queue.take();
System.out.println("Consumed: " + item);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
這些并發工具類在多線程環境下非常有用,可以幫助你更安全、高效地處理集合操作。當然,根據具體的需求和場景,你可能還需要選擇其他更適合的并發工具類。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。