분류 전체보기(14833)
-
Damon Thread(데몬 스레드), 데몬 스레드 예, setDaemon(), isDaemon()
Damon Thread(데몬 스레드)· 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드입니다.· 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료됩니다. 그 이유는 주 스레드의 보조 역할을 수행하므로 주 스레드가 종료되면 데몬 스레드는 존재의 의미가 없어지기 때문입니다. 이를 제외하면 데몬 스레드는 일반 스레드와 차이가 없습니다. 데몬 스레드 예· 주 스레드에 해당되는 워드프로세스, 미디어 플레이어, JVM이 종료되면 같이 종료되게 됩니다.· 워드프로세스의 자동 저장· 미디어 플레이어의 동영상 및 음악 재생· JVM의 가비지 컬렉터· 등 setDaemon()스레드를 데몬으로만들기 위해서는 주 스레드가 데몬이 될 스레드의 setDaemon(true)메소드를 호출해주면 됩니다. autoSav..
-
ReentrantLock과 Condition, 동기화 메소드
ReentrantLock과 Condition · 서로 다른 쓰레드를 구분해서 동기화 통지를 할 수 있게 해주는 것이 Condition입니다. · wait()와 notify()메소드로 스레드의 종류를 구분하지 않고, 공유 객체의 waiting pool에 같이 몰아넣는 대신 각 쓰레드를 위한 Condition을 만들어서 각각의 waiting pool에서 따로 기다리도록 하면 문제가 해결됩니다. · wait()와 notify()메소드는 요리사 쓰레드와 손님쓰레드를 구분해서 통지하지 못하는 단점이 있었습니다. wait()와 notify()메소드로 스레드의 종류를 구분하지 않고, 공유 객체의 waiting pool에 같이 몰아넣는 대신 · 손님 쓰레드를 위한 Condition과 요리사 쓰레드를 위한 Conditi..
-
synchronized블럭 vs ReentrantLock과 같은 lock클래스
synchronized블럭 vs ReentrantLock과 같은 lock클래스 대부분의 경우 lock()과 unlock()대신 synchronized블럭을 사용할 수 있습니다. 이때는 synchronized블럭을 사용하는 것이 성능상 더 좋을 수 있습니다.
-
lock()와 unlock( )를 통한 동기화블록
lock()와 unlock( )를 통한 동기화블록· synchronized키워드를 대체할 수 있는 방법입니다.· Java Ver 5.0 이후부터 제공되는 동기화 방식입니다.· lock 메소드와 unlock 메소드의 호출을 통해서 동기화 블록을 구성합니다.· ReentrantLock 인스턴스 를 이용한 동기화 기법입니다.· 임계영역 내에서 예외가 발생하거나 return문으로 빠져 나가게 되면 lock이 풀리지 않을 수 있으므로 unlock()은 try~catch()문으로 감싸는 것이 일반적입니다. try블럭내에서 어떤 일이 발생해도 finally블럭에 있는 unlock()이 수행되기 때문에 lock이 풀리지 않는 일은 발생하지 않습니다.·
-
ThreadGroup의 주요 메소드
ThreadGroup의 주요 메소드 · 그룹내에 포함된 모든 스레드들을 쉽게 종료할 수 있지만 스레드의 안전성 문제 때문에 Deprecated된 메소드인 suspend(), resume(), stop()메소드는 가급적 사용하지 않는 것이 좋습니다. · interrupt()메소드로 스레드들을 안전하게 종료하도록 코드를 구성하는 것이 좋습니다.
-
스레드 그룹 일괄 interrupt()
스레드 그룹 일괄 interrupt() · 스레드를 스레드 그룹에 포함시키면 스레드 그룹에서 제공하는 interrupt()메소드를 이용하여 그룹내에 포함된 모든 스레드들을 일괄적으로 interrupt할 수 있습니다. · 예를 들어 10개의 스레드들을 모두 종료시키기 위해서는 각 스레드마다 interrupt()메소드를 10번 호출해야 하지만, 함께 종료시킬 스레들이 같은 스레드 그룹에 소속되어 있다면 스레드 그룹에 interrupt()메소드를 1번 호출해 주면 스레드 그룹의 interrupt()메소드는 포함된 모든 스레드의 interrupt()메소드를 내부적으로 호출해 주어 일괄적으로 interrupt를 수행할 수 있습니다. 스레드 그룹의 interrupt() 메소드는 소속된 스레드의 interrupt()..