作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个线程池,它在我的主类中以 while 循环运行
executor = Executors.newFixedThreadPool(numThreads);
for (int i = 0; i < numThreads; i++) {
Runnable crawl = new crawlThread(this);
executor.execute(crawl);
}
executor.shutdown();
try {
while (!executor.isTerminated()) {
Thread.sleep(1000);
this.liveStatus();
if (System.in.available() != 0) {
System.out.println("What would you like to do? (0 = quit, 1 = pause, 2 = resume)");
Scanner runinput = new Scanner(System.in);
Integer answer = runinput.nextInt();
if (answer == 0)
{
System.out.println("Quitting...");
break;
} else if (answer == 1)
{
this.forcePause = true;
System.out.println("Pausing...");
} else if (answer == 2)
{
this.forcePause = false;
System.out.println("Resuming...");
}
runinput.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
虽然我不确定当我收到用户输入时如何实际暂停我的可运行对象。我曾尝试从线程/可运行类文件检查此代码的forcePause状态,以及是否将其设置为暂停以跳过其执行指令,尽管它不起作用。是否有任何正确的方法可以根据我的用户输入暂停和恢复我的线程。
谢谢
最佳答案
你的代码很好,你应该把它抽象一点,这样你就可以捕获异常。
示例:
class MyThread extends Thread {
private volatile boolean running = true; // Run unless told to pause
...
@Override
public void run()
{
for(int i=0 ; ; i++)
{
// This is a crude implementation of pausing the thread
while (!running)
// Work
area.setText(i+"");
}
public void pauseThread() throws InterruptedException
{
running = false;
}
public void resumeThread()
{
running = true;
}
}
关于java - 在用户输入java上暂停线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24022713/
我是一名优秀的程序员,十分优秀!