간단한 쓰레드 구현
자바에서 쓰레드를 구현하기 위해서는 두가지 방법이 있다.
1. Runnable 인터페이스를 구현하여 Thread에 생성자로 넣어주기
2. Thread 클래스를 직접 상속받는 클래스 사용하기
public class Thread_Basic {
public static void main(String[] args) {
/* 쓰레드 구현은 두가지 방법이 있다
* 1. Runnable 인터페이스를 구현 후 Thread 생성자에 넣어주기
* 2. Thread 클래스 직접 상속하기
* */
//Runnable 구현 후 Thread생성자로 넣어주기 방법
Runnable task = new Task();
Thread t1 = new Thread(task);
t1.start();
//쓰레드 직접 상속하여 구현
T2 t2 = new T2();
t2.run();
}
}
//인터페이스 구현 - 자바에서 다중 상속은 안되기에
//인터페이스를 구현하는 방법이 조금 더 유연한 프로그래밍이 가능하다
class Task implements Runnable{
int num = 0;
@Override
public void run() {
for(int i=0;i<100;i++) {
System.out.println("t1: "+num++);
}
}
}
//쓰레드를 직접 상속받는 클래스 사용
class T2 extends Thread{
int num = 0;
@Override
public void run() {
for(int i=0;i<100;i++) {
System.out.println("t2: "+num++);
}
}
}
결과는 뭐 다들 아시다시피 t1과 t2가 막 섞여서 실행된다
그렇다면 쓰레드 100개를 쓰려면
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
Thread t1 = new Thread(task);
...
하면 될까?
너무 비효율적이다. 이럴땐 자바 concurrent패키지의 쓰레드풀(ThreadPoolExecutor)를 사용하면 된다!
다음 포스팅에서 계속
'Java' 카테고리의 다른 글
[Java] Thread/MultiThread 4 - 동시성 문제 (0) | 2021.06.29 |
---|---|
[Java] Static 키워드 (0) | 2021.06.28 |
[Java] JVM 구조와 동작원리 (0) | 2021.06.27 |
[Java] Thread/MultiThread 3 - 쓰레드풀 (0) | 2021.06.19 |
[Java] Thread/MultiThread 1 - 쓰레드란? (0) | 2021.06.18 |