2023/11/30 2

[Java의 정석] 13-3. 스레드: 실행 제어

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 8. 실행 제어 상태NEW스레드가 생성되고 아직 start()되지 않은 상태RUNNABLE실행중 또는 실행 가능한 상태BLOCKED동기화 블럭에 의해 일시정지된 상태WAITING,TIMED_WAITING일시정지 상태(작업이 종료되지 않음) 일시정지 시간이 지정된 경우TERMINATED작업이 종료된 상태  메서드sleep()지정된 시간동안 스레드를 정지시킵니다.지정한 시간이 지나고 나면 자동적으로 다시 실행대기 상태가 됩니다.join()다른 스레드의 작업이 끝날 때까지 대기하도록 만드는 메서드지정한 시간동안 실행되도록 합니다.지정한 시간이 지나거나 작업이 종료되면 join()을 호출한 스레드는 다시 돌아와 실행됩니다suspend()스레드를 일시..

Java 2023.11.30

[Java의 정석] 13-4. 스레드: 동기화

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 9. 동기화한 스레드가 진행중인 작업을 다른 스레드가 간섭하지 못하게 막는 것입니다.멀티스레드의 경우 여러 스레드가 같은 프로세스 내의 자원을 공유해서 작업하므로 서로의 작업에 영향을 주게 됩니다.한 스레드가 특정 작업을 끝마치기 전까지 다른 스레드에 의해 방해받지 않도록 하는것이 필요합니다. 임계영역공유데이터를 사용하는 코드 영역입니다. Lock단 하나의 스레드만 공유데이터를 사용하도록 하는 매커니즘입니다.해당 공유데이터를 사용하는 스레드는 락을 획득합니다.임계영역의 모든 코드를 수행하고 나서 락을 반납하며, 다른 스레드가 반납된 락을 획득하여 임계영역에 접근할 수 있습니다. synchronizedsynchronized 키워드를 붙여 임계영역..

Java 2023.11.30