[ java ] 멀티 스레드 사용법

2024. 12. 26. 17:25·JAVA

📌 스레드와 멀티 스레드

❓ 멀티 스레드
하나의 프로세스 내에서 여러개의 스레드를 동시에 작업을 수행하는 것을 말한다.

❓ 스레드
프로세스 내에서 실제로 작업을 수행하는 최소 단위이며, 각 스레드는 독립적인 실행 흐름을 가진다.

 

📖  멀티 스레드 사용법

자바에서 멀티스레드를 사용하는 방법은 2가지가 있다.

  1. Thread를 상속받는 방법
  2. Runnable 인터페이스를 구현하는 방법

 

 

1️⃣ Thread를 상속받는 방법

 

⚠️ 자바는 다중상속을 지원하지 않아서, Thread를 상속받으면 다른 클래스를 상속 받을 수 없다.

  • 자바에서 스레드를 생성하는 가장 기본적인 방법은, Thread 클래스를 상속받는 것이다.
  • 상속받은 Thread 클래스의 run() 메소드를  오버라이드(재정의)한다.
    • start() 메서드가 실제 수행 흐름을 만들어내는 일을 하고, 준비가 되면 run()을 호출하는 방식으로 사용한다.
  • 사용방법은 아래와 같다.
public class MyThread extends Thread{
    @Override
    public void run(){
        System.out.println("MyThread 출발");

        for(int i=0;i<100;i++){
            System.out.println("MyThread " + i);
        }

        System.out.println("MyThread 종료");
    }
}
public class ThreadTest{
       //스레드 생성
        MyThread myThread = new MyThread();
        //run을 직접 호출하지 않는다.
        //myThread.run();
        
        //start()라는 메서드가 실제 수행 흐름을 하나 만들어내는 일을 하고, 준비가 되면 run()호출
        myThread.start(); 

}

 

 

2️⃣ Runnable 인터페이스를 구현하는 방법

 

⚠️ Runnable은 스레드 그 자체가 아니고, 작업을 정의하는 인터페이스이다. 간단하게 스레드에서 실행할 코드를 담고 있는 설계도라고 생각하면 된다.

  • Runnable 인터페이스는 run() 메서드만을 재정의한다. 그 후 혼자서 실행하기 힘들기 때문에 객체를 Thread 객체에 전달하여 스레드를 생성한다. 
  • 결론은 Runnable은 Thread의 도움을 받아야 한다는것!! 
 
public class RunnableTest {
	
    MyRunnable runnable = new MyRunnable();
    Thread thread = new Thread(runnable) ;
	
    //또는 아래처럼도 사용 가능 
	Thread thread = new Thread(new MyRunnable());
 
 }

 

 

'JAVA' 카테고리의 다른 글

[ java ] 인터페이스 (다중구현, static, default)  (0) 2025.03.31
[ java ] Optional 이란?  (0) 2025.01.20
[ java ] 생성자, 생성자 오버로딩  (0) 2024.12.10
[ java ] 추상클래스  (0) 2024.12.10
[ java ]Constant Pool과 String Constant Pool  (0) 2024.12.10
'JAVA' 카테고리의 다른 글
  • [ java ] 인터페이스 (다중구현, static, default)
  • [ java ] Optional 이란?
  • [ java ] 생성자, 생성자 오버로딩
  • [ java ] 추상클래스
Adose
Adose
  • Adose
    도즈의 개발 블로그
    Adose
  • 전체
    오늘
    어제
    • 분류 전체보기 (177)
      • JAVA (22)
      • 스프링 | 스프링 부트 (30)
        • 스프링 시큐리티 (1)
        • 채팅 (1)
      • 스프링 프로젝트 (5)
        • JDBC - 은행앱 구현 (1)
        • Spring Boot - 독서 블로그 프로젝트 (3)
        • 개인 프로젝트 - CoreBrief (1)
      • 가상화 기술 (1)
      • Git (1)
      • 코딩테스트 (99)
        • 프로그래머스 입문 (63)
      • AWS (1)
      • 데이터베이스 (0)
      • CS 공부 (4)
      • 알고리즘, 자료구조 (5)
      • 우테코 프리코스 (7)
      • 트러블 슈팅 (1)
      • 프론트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    test
    멋쟁이사자처럼백엔드
    스프링부트
    Java
    스프링
    LV0
    springdatajdbc
    코딩테스트
    자바
    GIT
    프로그래머스
    멋쟁이사자처럼
    jdbc
    LV1
    Spring
    프론트
    LV2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Adose
[ java ] 멀티 스레드 사용법
상단으로

티스토리툴바