Java

스레드

chaebideas77 2026. 6. 1. 16:36

<기록용>

스레드 실행 방법 3가지 공부

// 1. Thread를 상속받으면 MultiThread로 사용가능
//run() override 구현하고 start()로 실행
public class DigitThread extends Thread{

	@Override
	public void run() {
		for(int i=1;i<=26;i++) {
			System.out.println(currentThread().getName()+"쓰레드:"+ i);
		}
	}
	
}

 

Thread를 상속받으면 두번째 클래스는 상속이 불가능하기 때문에 interface를 구현함.

// 2. Runnable interface를 구현하여 Thread 생성하면 MultiThread로 사용가능
//run() override 구현하고 start()로 실행

class Parent{
	
}
public class LowerCaseRunnable extends Parent implements Runnable{

	@Override
	public void run() {
		for(char i='a';i<='z';i++) {
			System.out.println(Thread.currentThread().getName()+"쓰레드:"+ i);
		}
	}
}

 

public class ThreadExample1 {

	public static void main(String[] args) {
		System.out.println(Thread.currentThread().getName()+"쓰레드 시작");
		
		//멀티Thread를 사용하기
		DigitThread t1 = new DigitThread();
		LowerCaseRunnable lower = new LowerCaseRunnable();
		Thread t2 = new Thread(lower);
		Thread t3 = new Thread() {
			public void run() {
				for(int i=1;i<=3;i++) {
					System.out.println(currentThread().getName() + i + ": run을 재정의함");
					try {
						sleep(1);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		};
		
		t1.setName("쓰레드1번(DigitThread)");
		t2.setName("쓰레드2번(LowerThread)");
		t3.setName("쓰레드3번(Thread익명구현)");
		t1.start();
		t2.start();
		t3.start();
		
		for(char ch = 'A';ch<='Z';ch++) {
			System.out.println(ch);
			try {
				Thread.sleep(1);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		System.out.println();
		System.out.println(Thread.currentThread().getName()+"쓰레드 종료");
	}

}

'Java' 카테고리의 다른 글

Servlet이랑 jsp  (0) 2026.06.24
자바 jdbc로 미니 프로젝트  (0) 2026.06.16
제네릭  (0) 2026.06.01
이것이 자바다 연습문제 Chap12  (0) 2026.06.01
참조형 변수  (1) 2026.05.19