>Java >java지도 시간 >Java에서 스레드를 제어하는 ​​방법: 시작, 중지 및 다시 시작?

Java에서 스레드를 제어하는 ​​방법: 시작, 중지 및 다시 시작?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 12:36:02876검색

How to Control Threads in Java: Starting, Stopping, and Restarting?

Java의 스레드 제어: 시작, 중지 및 다시 시작

스레드를 시작하는 것은 Thread 클래스의 인스턴스를 생성하고 start() 메소드를 호출합니다. 그런 다음 스레드는 run() 메서드 내에서 코드를 실행합니다.

그러나 스레드를 중지하는 것은 그리 간단하지 않습니다. 스레드가 시작되면 이를 중지할 직접적인 방법이 없습니다. 대신 기술을 사용하여 스레드 실행을 중지해야 함을 알릴 수 있습니다.

한 가지 일반적인 접근 방식은 부울 플래그를 사용하여 스레드가 계속 실행되어야 하는지 여부를 나타내는 것입니다. 스레드의 run() 메소드 내에서 정기적으로 플래그를 확인하고 false로 설정된 경우 실행을 종료할 수 있습니다.

<code class="java">// Task.java

private boolean isRunning = true;

@Override
public void run() {
    while (isRunning) {
        // Perform tasks here
    }
}

public void stop() {
    isRunning = false;
}</code>

스레드 다시 시작

다시 시작 스레드는 Thread 클래스의 새 인스턴스를 생성하고 시작하는 것을 의미합니다. 이는 스레드가 중지되면 재사용할 수 없기 때문입니다. 그러나 원래 스레드에서 유지 관리하는 데이터나 상태는 새 스레드로 전송되지 않는다는 점에 유의하는 것이 중요합니다.

옵션 1: 새 스레드 만들기

<code class="java">Thread taskThread = new Thread(new Task());
taskThread.start();

// Later, to restart the thread...
taskThread = new Thread(new Task());
taskThread.start();</code>

옵션 2: 알림 및 다시 시작

<code class="java">// Task.java

private Object lock = new Object();

@Override
public void run() {
    while (true) {
        synchronized (lock) {
            if (shouldStop) {
                try {
                    lock.wait();
                } catch (InterruptedException e) {}
            }
        }
        // Perform tasks here
    }
}

public void stop() {
    synchronized (lock) {
        shouldStop = true;
        lock.notify();
    }
}

public void restart() {
    synchronized (lock) {
        shouldStop = false;
        lock.notify();
    }
}</code>

위 내용은 Java에서 스레드를 제어하는 ​​방법: 시작, 중지 및 다시 시작?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.