티스토리 뷰
단일 스레드
자바의 메인 스레드만을 이용함
멀티 스레드
메인 스레드 이외의 추가 스레드를 생성 및 사용
사용 방법
1>Runnable 인터페이스
class Task implements Runnable {
public void run() {
// Code
}
}
Thread thread = new Thread(new Task());
thread.start(); //Thread 시작
2>Thread 상속
public void workingThread extends Thread {
@Override
public void run() {
// Code
}
}
Thread thread = new workingThread();
thread.start();
Thread thread = new Thread(new Runnable() {
public void run() {
// Code
}
});
//Java8 람다식 이용
Thread thread = new Thread( () => {
// Code
});
동시성
멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질
우선순위(코드로 제어 가능)와 순위할당(JVM이 제어) 방식이 있음
thread.setPriority(Priority); //스레드 우선순위 정하기 (1<=Priority<=10)
thread.setPriority(Thread.MAX_PRIORITY);
thread.setPriority(Thread.MIN_PRIORITY);
thread.setPriority(Thread.NORM_PRIORITY);
임계영역 제어
동기화(synchronized) 메소드와 동기화 블록 사용
public synchronized void method() {
critical Section; //
}
//메소드 일부만 임계영역으로 처리 할 때
public void method() {
...
synchronized(sharedObject) {
critical Section;
}
...
}
참고