Java에서 스레드 종료

Rupam Yadav 2023년10월12일
  1. Java에서boolean 플래그를 사용하여 스레드 종료 또는 중지
  2. Java에서interrupt()를 사용하여 스레드 종료 또는 중지
Java에서 스레드 종료

Java의 스레드를 사용하면 여러 작업을 병렬로 실행할 수 있으므로 멀티 태스킹이 가능합니다. Thread 클래스를 사용하여 Java에서 스레드를 만들 수 있습니다. 이 기사에서는 스레드를 종료하는 두 가지 방법을 소개합니다.

쓰레드가 모든 작업을 완료하면Thread 클래스의run()메소드에 의해 파괴되지만, 때때로 우리는 완전히 실행이 끝나기 전에 쓰레드를 죽이거나 중지 할 수 있습니다.

Java에서boolean 플래그를 사용하여 스레드 종료 또는 중지

스레드를 명시 적으로 종료하려면 부울 플래그를 사용하여 작업을 중지 할시기를 스레드에 알릴 수 있습니다. 아래에서 두 개의 스레드는 이름과 함께 한 줄을 인쇄 한 다음 두 스레드 모두 약 100 밀리 초 동안 휴면합니다. 스레드는 부울 플래그exitThread가 참이 될 때까지 실행됩니다.

thread1thread2는 생성 된 두 개의 스레드이며 둘 다에 이름이 인수로 전달됩니다. ExampleThread 클래스의 생성자에는 스레드 실행을 시작하는thread.start()가 있으므로 두 스레드가 모두 실행됩니다. 병렬로 실행되기 때문에 출력이 두 스레드의 이름을 무작위로 인쇄하는 것을 볼 수 있습니다.

쓰레드를 멈추기 위해exitThreadtrue로 설정하는ExampleThread의 메소드 인stopThread()를 호출하고while(!exitThread)false가되면서 쓰레드가 마침내 멈 춥니 다.

public class KillThread {
  public static void main(String[] args) {
    ExampleThread thread1 = new ExampleThread("Thread One");
    ExampleThread thread2 = new ExampleThread("Thread Two");

    try {
      Thread.sleep(500);
      thread1.stopThread();
      thread2.stopThread();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    System.out.println("**Exiting the main Thread**");
  }
}

class ExampleThread implements Runnable {
  private String name;
  private boolean exitThread;
  Thread thread;

  ExampleThread(String name) {
    this.name = name;
    thread = new Thread(this, name);
    System.out.println("Created Thread: " + thread);
    exitThread = false;
    thread.start();
  }

  @Override
  public void run() {
    while (!exitThread) {
      System.out.println(name + " is running");
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }

    System.out.println(name + " has been Stopped.");
  }

  public void stopThread() {
    exitThread = true;
  }
}

출력:

Created Thread: Thread[Thread One,5,main]
Created Thread: Thread[Thread Two,5,main]
Thread Two is running
Thread One is running
Thread Two is running
Thread One is running
Thread One is running
Thread Two is running
Thread One is running
Thread Two is running
Thread One is running
Thread Two is running
**Exiting the main Thread**
Thread Two has been Stopped.
Thread One has been Stopped.

Java에서interrupt()를 사용하여 스레드 종료 또는 중지

여기서는 이전 예제를 사용하지만interrupt()라는 새 메서드를 사용합니다. 이 함수는 스레드에서 호출되는 즉시 실행을 중지합니다. 이 예제에서는thread.isInterrupted()를 사용하여interrupt()가 호출되었는지 확인합니다.

두 스레드를 모두 중지하려면thread1.thread.interrupt()thread2.thread.interrupt()를 호출하여 스레드를 종료합니다.

public class KillThread {
  public static void main(String[] args) {
    ExampleThread thread1 = new ExampleThread("Thread One");
    ExampleThread thread2 = new ExampleThread("Thread Two");

    try {
      Thread.sleep(6);
      thread1.thread.interrupt();
      thread2.thread.interrupt();
      Thread.sleep(8);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    System.out.println("**Exiting the main Thread**");
  }
}

class ExampleThread implements Runnable {
  private String name;
  Thread thread;

  ExampleThread(String name) {
    this.name = name;

    thread = new Thread(this, name);
    System.out.println("Created Thread: " + thread);

    thread.start();
  }

  @Override
  public void run() {
    while (!thread.isInterrupted()) {
      System.out.println(name + " is running");
    }

    System.out.println(name + " has been Stopped.");
  }
}

출력:

Created Thread: Thread[Thread One,5,main]
Created Thread: Thread[Thread Two,5,main]
Thread One is running
Thread Two is running
Thread One has been Stopped.
Thread Two has been Stopped.
**Exiting the main Thread**
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Thread