HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 타일러팀
[New] 타일러팀
/
🦾
Thread와 Runnable
🦾

Thread와 Runnable

Category
Java
Created
Apr 22, 2022 04:16 AM
Person
State
완료

Thread와 Runnable

Thread 생성

  • Java에서 Thread를 생성하는 방법은 두 가지가 존재
    • Thread를 상속 받아서 run() 메서드를 오버라이딩 하는 방법
    • Runnable 인터페이스를 implements 하여 run() 메서드를 정의하는 방법

Runnable implements

  • Runnable은 함수형 인터페이스로 run()만 존재
    • notion image
  • 따라서 Thread를 import 하여 사용해야 함
class ThreadEx1 implements Runnable{ public void run(){ //작업내용 } } ThreadEx1 threadEx1 = ThreadEx1(); Thread thread = new Thread(threadEx1); thread.start();
  • implements하여 run()을 구현하기 때문에 재사용성이 높다! 사실 구현한 run()으로 Thread를 생성하는 방법이라 아래 방법과 차이가 없다.

Thread extends

  • Thread 클래스도 Runable을 implements 하여 정의한 것
    • notion image
  • start()를 하게되면 ThreadGroup에 추가 시킴 ThreadGroup은 관련된 스레드를 묶어서 관리할 목적으로 이용 기본적으로 자신을 생성한 스레드와 같은 스레드 그룹에 속하게 됨 -> main 스레드 그룹
    • notion image
      notion image
  • extends하여 start()로 시작하면 된다.
class ThreadEx2 extends Thread{ public void run(){ //작업내용 } } ThreadEx1 threadEx2 = new ThreadEx2(); threadEx2.start();
  • 다른 클래스 상속 못받으니 Runnable implements 방법이 확장성 더 좋다~

언제 run() 메서드를 구현하여 사용할까?

  • 멀티 쓰레드를 사용하는 이유?
    • 병렬적으로 일을 수행하여 일을 빠르게 처리하기 위하여!
  • 그렇다면 언제 사용할까?
    • 독립적이고 실행 순서가 상관없는 일에 대해서 사용하자!
    • 예) 채팅 시스템과 같이 독립적이고, 순서와 관계 없이 들어오는대로 처리하면 되는 경우
  • 조심해야 할 점은?
    • 교착상태(Deadlock)에 빠질 수 있으니 독립적으로 수행할때만 사용하자~
    •