[英]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.