繁体   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