📃 Thread
- Runnable 인터페이스 구현 :
implements Runnable
- Thread 클래스 상속 :
extends Thread
Runnable 인터페이스는 추상메소드 하나만 정의하고 있으므로
run()
메소드를 오버라이딩하고 안에 스레드할 코드를 넣어줌class RunnableImpl implements Runnnable { @Override public void run() { 처리코드 } }
java 는 단일 상속만 허용하므로 다른 클래스를 상속받아야 할 경우
Thread 클래스를 상속받을수 없음
그럴 경우에는 Runnable 인터페이스를 구현class MultiThread extends Thread { @Override public void run() { 처리코드 } }
✅ 수업예문
1. Runnabla 인터페이스를 구현해 스레드 만들기
class
RunnableImplTest : 메인메소드 클래스static long mainNum; public static void main(String[] args) { RunnableImpl r1 = new RunnableImpl(20); RunnableImpl r2 = new RunnableImpl(20); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); }
class
RunnableImplimplements Runnable
: Runnable 인터페이스 구현 클래스int num; public RunnableImpl(int num) { this.num = num; } @override public void run() { for(int i = 1; i<=num; i++) { RunnableImplTest.mainNum += i; Sysout.println(Thread.currentThread() + " - num 1 : " + RunnableImplTest.mainNum); try { Thread.sleep(1000); } catch (InterruptedException e) { return; } } }
2. Thread 클래스를 상속해 스레드 만들기
class
ThreadExtends : 메인메소드 클래스static int mainNum; public static void main(String[] args) { MultiThread t1 = new MultiThread(20); MultiThread t2 = new MultiThread(20); t1.start(); t2.start(); }
class
MultiThreadextends Thread
: Thread 클래스를 상속하는 클래스int num; public MultiThread(int num) { this.num = num; } @Override public void run() { for(int i = 1; i<=num; i++) { ThreadExtends.mainNum += i; Sysout.println(currentThread() + " - num 1 : " + RunnableImplTest.mainNum); try { Thread.sleep(1000); } catch (InterruptedException e) { return; } } }
🚫 스레드는
start()
메소드를 사용하여 실행
run()
메소드를 사용하면 메인메소드에서 실행됨3. 스레드의 우선순위
스레드는 1~ 10까지 우선순위를 가진다
기본 우선순위는 5로 설정됨
** 우선순위가 높다고 실행시간을 반드시 보장하는 건 아님