목록Java/JAVA3 (26)
충분히 쌓여가는
쓰레드의 동기화 멀티 쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다 진행 중인 작업이 다른 쓰레드에게 간섭받지 않게 하려면 '동기화'가 필요 쓰레드의 동기화 - 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하게 막는 것 동기화하려면 간섭받지 않아야 하는 문장들을 '임계 영역'으로 설정 임계영역은 lock 얻은 단 하나의 쓰레드만 출입가능(객체 1개에 lock 1개) synchronized를 이용한 동기화 synchronized로 임계영역(lock이 걸리는 영역)을 설정하는 방법 2가지 한 번에 1개의 쓰레드만 임계 영역에 들어갈 수 있기 때문에 최소화하는 것이 좋다 동기화 되기 전의 코드 음수로 출력됨 class synchronizationTest { public static..
join() 지정된 시간동안 특정 쓰레드가 작업하는 것을 기다린다 void join() // 작업이 모두 끝날 때까지 void join(long millis) // 천 분의 일 초 동안 void join(long millis, int nanos) // 천 분의 일 초 + 나노 초 동안 예외처리를 해야한다(InterruptedException이 발생하면 작업 재개) public staic void main(String args[]) { ThreadTest_1 th1 = new ThreadTest_1(); ThreadTest_2 th2 = new ThreadTest_2(); th1.start(); th2.start(); startTime = System.currentTimeMillis(); try { th1..
suspend() 쓰레드의 실행을 일시정지 시킨다 deprecated됨(사용을 권장하지 않는다) => dead-lock 교착상태를 일으킬 가능성이 있기 때문 void suspend() // 쓰레드를 일시정지 시킨다 resume() 쓰레드의 실행을 재개시킨다 deprecated됨(사용을 권장하지 않는다) => dead-lock 교착상태를 일으킬 가능성이 있기 때문 void resume() // suspend()에 의해 일시정지된 쓰레드를 실행대기상태로 만든다 stop() 쓰레드의 실행을 완전정지 시킨다 deprecated됨(사용을 권장하지 않는다) => dead-lock 교착상태를 일으킬 가능성이 있기 때문 void stop() // 쓰레드를 즉시 종료시킨다 suspend(), resume(), stop(..
sleep() 현재 쓰레드를 지정된 시간동안 멈추게 한다 static 메서드이기 때문에 쓰레드 자기자신한테만 동작한다(static 메서드: sleep(), yield()) static void sleep(long millis) // 천 분의 일 초 단위 static void sleep(long millis, int nanos) // 천분의 일 초 + 나노 초 예외처리를 해야한다(InterruptedException이 발생하면 깨어남) InterruptedException이 필수 예외이기 때문 try { Thread.sleep(1, 500000); // 쓰레드를 0.0015초 동안 멈추게 한다 } catch(InterruptedException e) {} 항상 예외처리 해주기 힘듬 => delay 메서드 ..