연습에서 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 아마도 일반적이지 않지만 누군가가 하나의 리소스를 혼란 스럽거나 이해하기 어렵다고 생각하면 다른 것을 읽는 것이 좋습니다. 한 사람이 다른 사람에게 이치에 맞지 않는 것은 당연한 것입니다. –