기록 > 기억
[JAVA] 스레드 본문
스레드
● Thread 클래스로 직접 스레드 생성
//방법 (1)
class XXX implements Runnable {
public void run() {
//스레드 실행코드
}
}
Runnable xxx = new XXX();
Thread thread = new Thread(xxx);
thread.start();
//방법 (2)
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
//스레드 실행코드
}
});
thread.start();
● Thread 클래스의 자식 클래스로 스레드 생성
//방법 (1)
public class ChildThread extends Thread {
@Override
public void run() {
//스레드 실행코드
}
}
Thread thread = new ChildThread();
thread.start();
//방법 (2)
Thread thread = new Thread() {
@Override
public void run() {
//스레드 실행코드
}
};
thread.start();
● 동기화 → 멀티 스레드가 공유 객체를 사용하는 동안 객체를 잠금 (다른 스레드의 실행 방지)
//동기화 메소드
public synchronized void method() {
//하나의 스레드만 실행 (다른 스레드는 실행이 끝날때까지 대기)
}
//동기화 블록
public void method() {
//다른 스레드 실행 가능
//...
synchronized(공유객체) {
//하나의 스레드만 실행 (다른 스레드는 실행이 끝날때까지 대기)
}
//다른 스레드 실행가능
//...
}
● 데몬 스레드 → 주 스레드가 종료되면 데몬 스레드는 자동 종료
//작업 스레드
public class DaemonThread extends Thread {
@Override
public void run() {
//스레드 실행코드
}
}
//메인 스레드
public static void main(String[] args) {
Thread thread = new DaemonThread();
thread.setDaemon(true); //데몬 스레드 설정
thread.start();
//...
}
//메인 스레드가 종료되면 데몬 스레드 종료!
'IT국비지원' 카테고리의 다른 글
[JAVA] 네트워크 (0) | 2021.11.11 |
---|---|
[JAVA] 컬렉션 (List, Set, Map) (0) | 2021.11.11 |
[JAVA] 제네릭 타입 (0) | 2021.11.11 |
[JAVA] 기본 API 클래스 (0) | 2021.10.26 |
[JAVA] 문자열 (String) (0) | 2021.10.26 |
[JAVA] 예외 처리 (0) | 2021.10.25 |
[JAVA] 인터페이스 (0) | 2021.10.25 |
Comments