您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。