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