簡體   English   中英

如何通過命令提示符暫停和恢復線程用戶輸入?

[英]How to suspend and resume a thread user input through the command prompt?

如何通過命令提示符暫停和恢復線程用戶輸入?

我想要一個程序,讓用戶可以從掛起彎腰線程的階段開始運行線程。

包foo;

導入java.util.Vector;

公共類ThreadTest {

private Vector<String> threadNames = new Vector<String>();

public static void main(String[] args) {

    ThreadTest test = new ThreadTest();

    test.threadTest(Integer.parseInt(args[0]));

    System.out.println(test.threadNames);

}

private void threadTest(int numOfThreads) {

    Thread[] threads = new Thread[numOfThreads];

    for (int i = 0; i < threads.length; i++) {

        threads[i] = new foo.ThreadTest.MyThread();

        threads[i].start();

    }

    for (int i = 0; i < threads.length; i++) {

        try {

            threads[i].join();

        } catch (InterruptedException ignore) {}

    }

}

class MyThread extends Thread {

    public void run() {

        for (int i = 0; i < 1000000; i++) {

            i = i + 0;

        }

        threadNames.add(getName());

    }

}

}

您有很多選擇。 所有這些都需要某種RPC 最好的方法可能是基於JMX

特別是,請看一下ThreadMXBean (JMX)上可用的所有內容。 現在,它並沒有提供聽起來像您想要的確切功能,但是您可以編寫自己的功能來提供所需的擴展功能。

同樣,通常通過類似jconsole的方式訪問JMX,這是基於GUI的。 但是,JMX只是一個API,您可以編寫自己的基於控制台的客戶端,該客戶端通過CLI公開所需的功能。

另請參見: 從終端調用Java方法

您可以使用兩個線程簡單地解決這個問題?

  • 線程一負責聽用戶輸入。 在某些用戶輸入上,它將暫停或恢復線程二
  • 線程二將負責您希望能夠暫停和恢復的任何任務。

您可能還需要看一下Java Concurrency Tutorials

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM