在Java中启动,暂停,恢复和停止线程的最佳方法是什么? 我写了一些代码进行测试,它的工作原理我想要的,但我不确定这是不是最好的方法。 如果有很多线程像这样,那么当它们一直在检查运行和暂停时是否会浪费大量资源?
public class ThreadTest {
public static void main(String[] args) {
try {
Counter t = new Counter();
t.start();
Thread.sleep(4000);
t.pause();
Thread.sleep(5000);
t.pause();
Thread.sleep(4000);
t.finish();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Counter extends Thread {
int c;
boolean run, pause;
public Counter() {
c = 0;
}
public void run() {
run = true;
while (run == true) {
if (!pause) {
c++;
System.out.println(c);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
System.out.println("Stop!");
}
public void finish() {
run = false;
}
public void pause() {
pause = !pause;
}
}
答案 0 :(得分:1)
在Java中启动,暂停,恢复和停止线程的最佳方法是什么?如果有很多线程像这样,那么当它们一直在检查运行和暂停时是否会浪费大量资源?
最好的方法是不显式启动和暂停线程。你是对的,这是浪费时间。
当线程在流,end of a producer/consumer queue或其他有助于并发的数据结构上阻塞自身时,操作系统应自动完成线程暂停。