Java
[Java] Thread/MultiThread 2 - 쓰레드 구현
llshl
2021. 6. 18. 23:32
반응형
간단한 쓰레드 구현
자바에서 쓰레드를 구현하기 위해서는 두가지 방법이 있다.
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)를 사용하면 된다!
다음 포스팅에서 계속
반응형