항상 '3'이 출력되기 때문에. 동기화가 필요하지 않습니까? 이 간단한 것을 테스트하려고합니다. 왜냐하면 실제의 다중 스레드 문제에 문제가 있습니다. 문제점을 설명하기에는 좋지 않습니다. 이 상황을 보여주는 간단한 버전입니다. 당신이 다른 클래스에 대한 '실행'을 호출 할 때까지 count++
완료 할만큼 빠른처럼이 스레드는 왜 안전합니까?
class Test {
public static int count = 0;
class CountThread extends Thread {
public void run()
{
count++;
}
}
public void add(){
CountThread a = new CountThread();
CountThread b = new CountThread();
CountThread c = new CountThread();
a.start();
b.start();
c.start();
try {
a.join();
b.join();
c.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
Test test = new Test();
System.out.println("START = " + Test.count);
test.add();
System.out.println("END: Account balance = " + Test.count);
}
'main' 코드 주위에 루프를 넣으면 그럴 수 없습니다. – Chan