- 메인 스레드(Main thread)
main() 메소드 실행하면 시작됨
첫 코드부터 차례로 순차적으로 실행, 마지막 코드 or return 만나면 실행 종료
- 어떤 자바건 메인 스레드는 반드시 존재. 작업 이외의 추가적인 병렬 작업의 수만큼 스레드 생성
1. java.lang.Thread 클래스 객체화 생성 가능
ex)class Task implements Runnable
ex)Thread thread = new Thread(Runnable target); //생성자 호출
runnable 은 작업 스레드가 실행할 수 있는 코드를 가지고 있는 개체, 인터페이스 타입이기 때문에 구현 객체 만들어 대입, 실체 스레드 아님
public void run(){} -> 재정의해서 작업 스레드가 실행할 코드 작성
ex) 1) 기본
class A implements Runnable{ //Runnable 구현
public void run(){ //인터페이스 구현을 받아서 재정의 필요
//실행문
}
}
class b {
public static void main(String[] args){
Runnable task = new A(); //Runnable를 구현하는 A를 만들고
Thread thread = new Thread(task); //스레드로 만들어
thread.start(); //실행
//메인에서 돌아갈 스레드 만들기
}
}
2) Runnable 익명 객체 이용
Thread thread = new Thread(new Runnable(){
@override
public void run(){
//실행문
}
});
3) 람다식 이용
Thread thread = new Thread(()-> {
//실행문
});
2. Thread 상속해 하위 클래스 만들어 생성 가능
: 작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 정의하면서 작업 내용 포함 가능
ex) public class A extends Thread {
@override
public void run(){
//실행문
}
}
public class b {
public void main(String[] args){
Thread thread = new A();
thread.start(); //스레드 실행
}
}
ex) 익명 객체
Thread thread = new Thread(){
public void run(){
//실행문
}
}
- Thread 호출 -> thread.start(); 를 통해 run() 실행