ㆍ스스로 종료
ㆍ강제 종료
스레드 A가 스레드 B를 강제 종료시키고자 하는 경우 스레드 B의 interrupt()를 호출하여야 한다. 이때, 스레드 B는 sleep() 코드와 함께 ImterruptedException 예외를 처리하는 try-catch 블록을 가지고 있어야 한다.
B.interrupt();
ㆍsynchronized로 동기화 블록 지정
ㆍwait()-notify() 메소드로 스레드 실행 순서 제어
💬 스레드가 공유 데이터를 접근할 때, 하나씩 순차적으로 실행하도록 제어하는 기법
💬 synchronized 키워드는 스레드 동기화를 위한 장치로서, 임의의 코드 블록을 동기화가 설정된 임계 영역으로 지정
☝ 메소드를 임계 영역으로 지정하는 방법
synchronized void print(String text) { // 동기화 메소드
...
for(int i = 0; i < text.length(); i++) // text의 각 문자 출력
System.out.print(text.charAt(i));
...
}
✌ 임의의 코드 블록만 임계 영역으로 지정하는 방법
void execute(String text) {
...
synchronized(this) { // 동기화 코드 블록
...
for(int i = 0; i < text.length(); i++) // text의 각 문자 출력
System.out.print(text.charAt(i));
...
}
}
💬 스레들이 순차적으로 공유 데이터에 접근하도록 제어된 경우라도, 두 스레드가 데이터를 주고 받으면서 충돌이 일어날 수 있는 producer-consumer 문제를 해결