자바 쓰레드 간단한 질문..
글쓴이: hgg2468 / 작성시간: 목, 2018/01/25 - 5:12오후
class Printing implements Runnable { public synchronized void run() { try { while(true) { System.out.println("하이"); wait();} } catch (InterruptedException e) { System.out.println(e); } System.out.println("hi"); } } class Nudging implements Runnable { public synchronized void run() { for(int i = 0; i < 1000000; i++) { if (i/1000 == 0) { notifyAll(); } } } }
위와 같이 2개의 쓰레드 클래스를 만들어서 쓰레드를 실행시켜봤습니다.
제가 기대했던 결과는
Printing 객체에서 '하이'를 한 번 출력하고 wait에 들어가고,
Nudging 객체에선 i를 1000번 카운팅 하면(시간 지연효과를 내려고 대충 구현했습니다) notifyAll() 로 wait하고 있는 Printing객체를 깨웁니다.
그 다음엔 Printing객체의 catch가 InterruptedException 을 받고, catch 블락 안에 있는 메소드를 실행하여 InterruptException.toString을 출력하는 것이었습니다.
근데 실행 결과는 그냥
하이
한번 나오고 무한 대기입니다.
무엇이.. 문제일까요 ㅜ
Forums:
아아 i / 1000 이 아니라 i % 1000으로
아아 i / 1000 이 아니라 i % 1000으로 실행시켰습니다.
댓글 달기