package thread;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Exercise30_09 {
private static Set<Integer> set = Collections.synchronizedSet(new HashSet<>()); //创建同步合集
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2); //创建2个线程大小的线程池
executor.execute(Exercise30_09::addElement);
executor.execute(Exercise30_09::searchElement);
executor.shutdown();
}
/** 向合集添加元素 */
public static void addElement() {
try {
int i = 0;
while (true) {
set.add(i++);
Thread.sleep(1000);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
/** 遍历合集 */
public static void searchElement() {
try {
while (true) {
// synchronized (set) { //添加此句可阻止异常发生
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println();
// }
Thread.sleep(1000);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}