如何通过命令提示符挂起和恢复线程用户输入?

时间:2012-01-23 11:24:16

标签: java

如何通过命令提示符暂停和恢复线程用户输入?

我想要一个程序,用户可以通过暂停来从线程中获取线程。

包foo;

import java.util.Vector;

public class 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());

    }

}

}

2 个答案:

答案 0 :(得分:1)

您有很多选择。所有这些都需要某种RPC。最好的方法可能基于JMX

特别是,请查看ThreadMXBean(JMX)上提供的所有内容。现在,这并没有为您提供听起来像您正在寻找的确切功能,但您可以自己编写,提供您需要的扩展功能。

此外,JMX通常通过类似jconsole的东西访问 - 这是基于GUI的。但是,JMX只是一个API,您可以编写自己的基于控制台的客户端,通过CLI公开您需要的功能。

另请参阅:calling java methods from a terminal

答案 1 :(得分:0)

你可以用两个线程来解决这个问题吗?

  • Thread One负责收听用户输入。在某些用户输入上,它将暂停或恢复Thread Two
  • 线程二将负责您希望能够执行的任何任务 暂停和恢复。

您还可以查看Java Concurrency Tutorials