현재 Java에서 모니터의 사용법을 배우고 있지만 동기화 된 메서드의 작동 방식을 알지 못합니다.Java 모니터의 동기화 된 메서드
하나의 스레드가 동기화 된 메서드 안에 있지만 다른 스레드는 동기화 된 메서드 안에있을 수없고 해당 모니터의 자체 소유권을 제거하지 않는다는 것을 알고 있습니다.
그래서 내가import java.util.Random;
public class ex3 extends Thread {
private static int nbA=0;
private static int nbB=0;
public static final Random rand = new Random();
public void run(){
while(true){
System.out.println(nbA+" "+nbB);
try{
Thread.sleep(rand.nextInt(500));
}catch (Exception e){e.printStackTrace();}
if (rand.nextBoolean()){
try {
A();
} catch (InterruptedException e) {}
}else{
try {
B();
} catch (InterruptedException e) {}
}
}
}
public synchronized void A() throws InterruptedException{
nbA++;
Thread.sleep(rand.nextInt(500));
nbA--;
}
public synchronized void B() throws InterruptedException{
nbB++;
Thread.sleep(rand.nextInt(500));
nbB--;
}
public static void main(String[] argv){
new ex3().start();
new ex3().start();
new ex3().start();
}
}
가 나는 프로 농구 (NBA) 또는 NBB가 NBB 및 NBA 1 또는 우수한 것이 불가능하다고 생각하는지 테스트하는 코드를 작성하려고 둘> 0하지만
일이야 나는 무엇을 오해 하는가?
죄송합니다.