【发布时间】:2018-11-21 06:43:22
【问题描述】:
请仔细阅读文字,标题不太好,但我想不出更容易描述问题的东西。
这是一个理论问题,我将使用 java 来演示,但我需要的解决方案更像是一种设计模式,因此它可以是任何语言的思想。
一个程序有 2 个线程:
线程 A - 与用户交互,用户可以在集合中添加或删除项目
线程 B - 不断迭代在其项目上执行任务的 Set
在没有ConcurrentModificationException 的情况下如何执行此方案?
final Set<String> set = new HashSet();
//A
new Thread(new Runnable(){
public void run(){
while(true){
//user adds or remove items to set
}
}
}).start();
new Thread(new Runnable(){
public void run(){
while(true){
for(String s : set){
//do stuff
}
}
}
}).start();
这是一个非常常见的场景,应该有一个设计模式来处理它
【问题讨论】:
标签: java multithreading concurrency concurrentmodification