Java集合框架操作不当:集合并发问题实例
在Java集合框架中,如果操作不当,可能会引发并发问题。以下是一个常见的例子:
// 假设我们有一个线程安全的ArrayList
List<String> list = new ArrayList<>();
// 创建两个并发任务
ExecutorService executor = Executors.newFixedThreadPool(2);
Runnable task1 = () -> {
for (int i = 0; i < 100; i++) {
list.add("Item " + i);
}
};
Runnable task2 = () -> {
while (!list.isEmpty()) {
String item = list.remove();
System.out.println("Processing: " + item);
}
};
// 同时执行任务
executor.execute(task1);
executor.execute(task2);
// 关闭线程池
executor.shutdown();
// 检查线程池是否已经停止所有工作
while (!executor.isTerminated()) {
// 如果这里发生异常,可能会导致其他任务无法正确关闭
Thread.sleep(100);
}
在这个例子中,我们创建了两个并发任务,分别向集合添加元素和从集合移除并处理元素。如果线程池管理不当,可能会出现并发问题,如数据不一致、丢失更新等。
还没有评论,来说两句吧...