[Java] Thread 구현하기

정재현·2024년 1월 8일

Java

목록 보기
35/43
post-thumbnail

Java에서 Thread 구현하는 방법

Java에서 제공하는 Thread 클래스를 이용(상속)

  • run() 메서드에 작성된 코드가 쓰레드가 수행할 작업
  • Java는 다중 상속을 지원하지 않기 때문에 Thread 클래스를 상속받아서 처리하는 방법은 확장성이 매우 떨어진다.
	// Thread Claas를 이용
	public class TestThread extends Thread {
    	// 쓰레드에서 수행할 작업
		@Override
		public void run() {
			// 쓰레드 수행작업
		}
	}

	...

	// Thread를 생성해서 실행
	TestThread thread = new TestThread(); // 쓰레드 생성
	thread.start() // 쓰레드 실행

Java에서 제공하는 Runnable 인터페이스를 활용

  • run() 메서드에 작성된 코드가 쓰레드가 수행할 작업
    • run() 메서드를 구현해야 함
  • Runnable은 Tread클래스와 다르게 인터페이스이기 때문에 확정성에 매우 유리하다.
	public class TestRunnable implements Runnable {
		@Override
		public void run() {
			// 쓰레드에서 수행할 작업 정의
		}
	}

	...

	// Runnable 인터페이스를 구현해 Thread를 생성해서 실행
	Runnable run = new TestRunnable();
	Thread thread = new Thread(run); // 쓰레드 생성

	thread.start(); // 쓰레드 실행

람다식으로 Thred 생성

  • 쓰레드를 만들고 사용할 때 제일 많이 사용하는 방법
    • 쓰레드에서 수행할 작업을 실행구문 {} 안에 작성하여 익명함수처럼 task라는 이름으로 사용
public class Main {
    public static void main(String[] args) {
        Runnable task = () -> {
        	// 쓰레드에서 수행할 작업
            int sum = 0;
            for (int i = 0; i < 50; i++) {
                sum += i;
                System.out.println(sum);
            }
            System.out.println(Thread.currentThread().getName() + " 최종 합 : " + sum);
        };

		// 위에서 사용한 `run()`대신 사용자가 정의한 task라는 이름으로 Thread 2개 생성
        Thread thread1 = new Thread(task);
        thread1.setName("thread1");
        Thread thread2 = new Thread(task);
        thread2.setName("thread2");

		// 멀티 Thread 실행
        thread1.start();
        thread2.start();
    }
}
  • run() : 쓰레드가 수행할 작업을 실행 블록 {} 안에 작성
  • setName() : 쓰레드에 이름 부여
  • Thread.currentThread().getName() : 현재 실행 중인 쓰레드의 이름을 반환

profile
공부 기록 보관소

0개의 댓글