이아현
1(또는 2)와 3이 병렬로 출력되고, 1(또는 2)가 끝난 후 2(또는 1)이 출력된다.
한 객체(인스턴스) 내에 lock은 한 개 존재한다.
static 메소드는 클래스에 속하므로 별로의 lock을 가진다.
method1,2는 static이기 때문에 한 쓰레드가 락을 가지고 있으면 다른 쓰레드가 실행할 수 없다.
method3는 인스턴스에 속하므로 thread3가 바로 lock을 얻어 실행할 수 있다.
김지원
class WordGenerator extends Thread{
@Override
public void run() {
/*
* 1. 2초마다 배열 data의 값 중 하나를 임의로 선택해서
* 2. words에 저장한다.
* */
while (true) {
int idx = (int) (Math.random() * 7);
words.add(data[idx]);
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
모르겠어~