我正在阅读java中的并发实践。有一些问题,我无法理解。 例如,java线程安全:线程安全吗?
package com.thread;
import java.util.Collections;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class HiddenIterator {
private final Set<Integer> set = Collections.synchronizedSet(new HashSet<Integer>());
public void add(Integer i) {
synchronized (set) {
set.add(i);
}
}
public void remove(Integer i) {
synchronized (set) {
set.remove(i);
}
}
public void addTenThings() {
Random random = new Random();
for (int i = 0; i < 10; ++i) {
add(random.nextInt());
}
//Hidden Iterator!
System.out.println("DEBUG: added ten elements to " + set);
}
}
是程序线程安全吗? 如果不是,如何编辑?
我找到了[Java Concurrency Tutorial](https://docs.oracle.com/javase/tutorial/essential/concurrency/sync)。html)是一个很好的指导。 –
@ D.B。不如JCIP ... – shmosel
@shmosel也许不是,但总的来说,如果有人发现一个资源混乱或难以理解,读另一个资源可能是一个好主意。对一个人来说有意义的事对另一个人来说可能没有意义。 –