私は実際に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おそらく誰かが1つのリソースが混乱していると分かったり、理解しづらい場合は、別のリソースを読むことをお勧めします。ある人が他の人にとって意味をなさないかもしれないことには意味があります。 –