0
다음 문제는 OCP Java SE 7 Programmer II 시험의 모의 시험에 있습니다. 해결책은 대답이 0이지만 동료와 나는 대답이 -5와 5 사이가 아니라는 것을 확신하지 못한다. (이것은 선택이다) 누군가가 우리에게 이것을 명확하게 할 수 있을까? 다음은 코드입니다.AtomicInteger가있는 스레드의 동작
import java.util.concurrent.atomic.AtomicInteger;
class AtomicVariableTest {
private static AtomicInteger counter = new AtomicInteger(0);
static class Decrementer extends Thread {
public void run() {
counter.decrementAndGet(); // #1
}
}
static class Incrementer extends Thread {
public void run() {
counter.incrementAndGet(); // #2
}
}
public static void main(String []args) {
for(int i = 0; i < 5; i++) {
new Incrementer().start();
new Decrementer().start();
}
System.out.println(counter);
}
}
고마워요!
그것은 사이의 -5 5. 시작한 10 개의 실 중에서 카운터를 인쇄하기 전에 얼마나 많은 사람들이 실제로 작업을했는지 알지 못합니다. 왜냐하면 당신이 끝내기를 기다리지 않았기 때문입니다. –
@SotiriosDelimanolis - 나는 당신이 "정의되지 않은"것을 의미한다고 생각하지 않는다. (여기에는 안전하지 않은 스레드가 없다). 나는 당신이 "비 결정적"을 의미한다고 생각한다. @MattTimmermans가 지적했듯이, 어떤 스레드가 완료되었는지 모르겠다. – jtahlborn
@jtah 그래, 네가 한 말. –