모든 살아있는 스레드가 실행되지 않도록하려면 어떻게해야합니까?

Danrex

그래서 저는 멀티 스레딩에 대해 머리를 감싸고 있고 아주 기본적인 프로그램을 만들었습니다. 아이디어는 단순히 몇 개의 스레드를 시작하고 각 스레드는 0으로 경쟁 (감소)하여 1이 승자로 선언되고 다른 스레드가 즉시 중지됩니다. 나는 다른 스레드를 종료하는 부울 플래그를 사용했지만 때로는 약간의 시간 동안 계속됩니다 (실행이 여전히 참인지 확인하기 위해 while 루프에서 검사를 수행 할 때까지 추측합니다).

나는 인터럽트를 시도했지만 내 이해는 이것들이 잠자고 대기중인 스레드에서만 작동하고 전체 시간 동안 거의 사용하고있는 스레드에서만 작동한다는 것입니다. 나는 system.exit (1)을 사용했지만 적어도 즉시는 아니지만 이것도 그들을 멈추지 않습니다. 경험이 많은 사람들이 무엇을할지 궁금하십니까? 기본적으로 저는 "모두 지금 지금하고있는 일을 중지하십시오"라고 말하는 스레드를 원합니다.

다음은 코드입니다.

실행 가능 클래스

public class ThreadRunnable implements Runnable {

    private static boolean run;
    private int tick;

    public ThreadRunnable() {
        run = true;
        tick = 5;
    }

    public void run() {
        Thread t = Thread.currentThread();
        while (run) {
            tickDeduction();
            if (tick == 0) {
                System.out.println("Thread " + (Thread.currentThread().getId()) + " WINS");
                this.run = false;
                return;
            }
        }
    }

    public synchronized void tickDeduction() {
        System.out.println("Thread " + (Thread.currentThread().getId()) + " is at tick " + this.tick);
        this.tick--;
    }
}

메인 클래스

     public static void main(String[] args) {
        ThreadRunnable runnableBlue = new ThreadRunnable();
        ThreadRunnable runnableRed = new ThreadRunnable();
        Thread teamBlue = new Thread(runnableBlue); 
        Thread teamRed = new Thread(runnableRed);
        teamBlue.start();
        teamRed.start();
    }
스티븐 C

기본적으로 저는 "모두 지금 지금하고있는 일을 중지하십시오"라고 말하는 스레드를 원합니다.

Java 애플리케이션이 자체적으로이를 수행 할 수있는 방법은 없습니다. 디버거는 그것을 할 수 있습니다. (확실히 JDWP 프로토콜에는 대상 JVM의 모든 스레드를 고정하는 명령이 있습니다 ...)


Java 애플리케이션 내에서 얻을 수있는 가장 가까운 Thread.suspend()방법 은 ThreadGroups 및 Threads 트리를 탐색하고 더 이상 사용되지 않는 메서드를 각 스레드에 적용하는 것 입니다. (현재 스레드를 일시 중지하지 않도록주의하십시오 ...) 그러나 suspend 메소드는 위험하며 (javadocs 참조) 순회에서 모든 스레드를 볼 것이라는 보장은 없습니다. 물론이 (가설적인) 절차는 즉각적인 것이 아닙니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python 스크립트를 실행할 때 Windows 10이 모든 종류의 절전 모드 또는 최대 절전 모드로 전환되지 않도록하려면 어떻게해야합니까?

분류에서Dev

ReSharper가 모든 .Bind 문을 한 줄에 추가하지 않도록하려면 어떻게해야합니까?

분류에서Dev

모든 요소가 표시되도록 방법을 혼합하려면 어떻게해야합니까? 한 가지 더 요소를 놓치고 있습니다

분류에서Dev

적절한 입력이없는 경우이 업로드 스크립트가 실행되지 않도록하려면 어떻게해야합니까?

분류에서Dev

Openbox가있는 모든 데스크톱에 애플리케이션이 자동으로 표시되도록하려면 어떻게해야합니까?

분류에서Dev

GridView가 해당 열 내에서 사용할 수있는 모든 너비를 차지하도록하려면 어떻게해야합니까?

분류에서Dev

원하지 않는 문자를 바꿀 때 일부 단어가 함께 실행되지 않도록하려면 어떻게해야합니까?

분류에서Dev

모든 스레드가 실행을 완료하면 마지막 스레드를 실행하려면 어떻게해야합니까?

분류에서Dev

모든 것이 삐걱 거리는 대신 스크롤로 내 페이지가 반응하도록하려면 어떻게해야합니까?

분류에서Dev

기본 2의 모든 거듭 제곱이 합계가 아닌 표시되도록 방법을 수정하려면 어떻게해야합니까?

분류에서Dev

Nginx-워드 프레스가 모든 위치를 가로채는 것을 방지하여 각도 x에 일부를 사용할 수 있도록하려면 어떻게해야합니까?

분류에서Dev

내가 입력하는 모든 것에 tinymce가 <! DOCTYPE html> <html> <head> </ head> <body>를 추가하지 못하도록하려면 어떻게해야합니까?

분류에서Dev

모든 프로세스가 niceness 5로 시작되도록하려면 어떻게해야합니까?

분류에서Dev

향후 생성되는 모든 신규 사용자가 특정 파일을 복사하도록하려면 어떻게해야합니까?

분류에서Dev

이 쿼리가 ID가 1 인 모든 행을 반환하도록하려면 어떻게해야합니까?

분류에서Dev

MainWindow pyqt5에있을 때 위젯에서 QPushButton.clicked가 실행되지 않도록하려면 어떻게해야합니까?

분류에서Dev

자식을 클릭하는 동안 부모 요소에서 이벤트가 발생하지 않도록하려면 어떻게해야합니까?

분류에서Dev

Linux에서 모든 사용자가 파일에 쓸 수 있도록 허용하려면 어떻게해야하지만 내 (python) 스크립트를 실행해야합니까?

분류에서Dev

이 슬라이드 코드 조각이 무한 반복되도록하려면 어떻게해야합니까 (현재 코드가 작동하지 않고 어디에서 실수를하는지 모르겠습니다)

분류에서Dev

아래 코드가 한 줄을 건너 뛰지 않도록하려면 어떻게해야합니까?

분류에서Dev

배열이 비어있을 때 UITableView가 충돌하지 않도록하려면 어떻게해야합니까?

분류에서Dev

모든 브라우저에서 오디오가 작동하도록하려면 어떻게해야합니까? 브라우저에서 지원하지 않는 경우 어떤 기본 요소를 사용할 수 있습니까?

분류에서Dev

Backbones save 메소드가 모든 모델을 업데이트하지 않도록하려면 어떻게해야합니까?

분류에서Dev

키보드와 전원 단추를 제외한 모든 항목에서 Windows가 깨어나지 않도록하려면 어떻게해야합니까?

분류에서Dev

Docker 서비스가 항상 내 호스트에서 할당 된 모든 RAM을 사용하지 않도록하려면 어떻게해야합니까?

분류에서Dev

3 단계 기호를 사용하지 않는 모든 레이아웃 및 해당 변형을 나열하려면 어떻게해야합니까?

분류에서Dev

3 단계 기호를 사용하지 않는 모든 레이아웃 및 해당 변형을 나열하려면 어떻게해야합니까?

분류에서Dev

주어진 EditText가 비어있는 경우 포커스가 다음 필드로 이동하지 않도록하려면 어떻게해야합니까?

분류에서Dev

내용을 표시하지 않고 특정 텍스트가있는 모든 매뉴얼 페이지를 나열하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    Python 스크립트를 실행할 때 Windows 10이 모든 종류의 절전 모드 또는 최대 절전 모드로 전환되지 않도록하려면 어떻게해야합니까?

  2. 2

    ReSharper가 모든 .Bind 문을 한 줄에 추가하지 않도록하려면 어떻게해야합니까?

  3. 3

    모든 요소가 표시되도록 방법을 혼합하려면 어떻게해야합니까? 한 가지 더 요소를 놓치고 있습니다

  4. 4

    적절한 입력이없는 경우이 업로드 스크립트가 실행되지 않도록하려면 어떻게해야합니까?

  5. 5

    Openbox가있는 모든 데스크톱에 애플리케이션이 자동으로 표시되도록하려면 어떻게해야합니까?

  6. 6

    GridView가 해당 열 내에서 사용할 수있는 모든 너비를 차지하도록하려면 어떻게해야합니까?

  7. 7

    원하지 않는 문자를 바꿀 때 일부 단어가 함께 실행되지 않도록하려면 어떻게해야합니까?

  8. 8

    모든 스레드가 실행을 완료하면 마지막 스레드를 실행하려면 어떻게해야합니까?

  9. 9

    모든 것이 삐걱 거리는 대신 스크롤로 내 페이지가 반응하도록하려면 어떻게해야합니까?

  10. 10

    기본 2의 모든 거듭 제곱이 합계가 아닌 표시되도록 방법을 수정하려면 어떻게해야합니까?

  11. 11

    Nginx-워드 프레스가 모든 위치를 가로채는 것을 방지하여 각도 x에 일부를 사용할 수 있도록하려면 어떻게해야합니까?

  12. 12

    내가 입력하는 모든 것에 tinymce가 <! DOCTYPE html> <html> <head> </ head> <body>를 추가하지 못하도록하려면 어떻게해야합니까?

  13. 13

    모든 프로세스가 niceness 5로 시작되도록하려면 어떻게해야합니까?

  14. 14

    향후 생성되는 모든 신규 사용자가 특정 파일을 복사하도록하려면 어떻게해야합니까?

  15. 15

    이 쿼리가 ID가 1 인 모든 행을 반환하도록하려면 어떻게해야합니까?

  16. 16

    MainWindow pyqt5에있을 때 위젯에서 QPushButton.clicked가 실행되지 않도록하려면 어떻게해야합니까?

  17. 17

    자식을 클릭하는 동안 부모 요소에서 이벤트가 발생하지 않도록하려면 어떻게해야합니까?

  18. 18

    Linux에서 모든 사용자가 파일에 쓸 수 있도록 허용하려면 어떻게해야하지만 내 (python) 스크립트를 실행해야합니까?

  19. 19

    이 슬라이드 코드 조각이 무한 반복되도록하려면 어떻게해야합니까 (현재 코드가 작동하지 않고 어디에서 실수를하는지 모르겠습니다)

  20. 20

    아래 코드가 한 줄을 건너 뛰지 않도록하려면 어떻게해야합니까?

  21. 21

    배열이 비어있을 때 UITableView가 충돌하지 않도록하려면 어떻게해야합니까?

  22. 22

    모든 브라우저에서 오디오가 작동하도록하려면 어떻게해야합니까? 브라우저에서 지원하지 않는 경우 어떤 기본 요소를 사용할 수 있습니까?

  23. 23

    Backbones save 메소드가 모든 모델을 업데이트하지 않도록하려면 어떻게해야합니까?

  24. 24

    키보드와 전원 단추를 제외한 모든 항목에서 Windows가 깨어나지 않도록하려면 어떻게해야합니까?

  25. 25

    Docker 서비스가 항상 내 호스트에서 할당 된 모든 RAM을 사용하지 않도록하려면 어떻게해야합니까?

  26. 26

    3 단계 기호를 사용하지 않는 모든 레이아웃 및 해당 변형을 나열하려면 어떻게해야합니까?

  27. 27

    3 단계 기호를 사용하지 않는 모든 레이아웃 및 해당 변형을 나열하려면 어떻게해야합니까?

  28. 28

    주어진 EditText가 비어있는 경우 포커스가 다음 필드로 이동하지 않도록하려면 어떻게해야합니까?

  29. 29

    내용을 표시하지 않고 특정 텍스트가있는 모든 매뉴얼 페이지를 나열하려면 어떻게해야합니까?

뜨겁다태그

보관