在 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;
}
}
在 Java 中启动、暂停、恢复和停止线程的最佳方式是什么?如果有很多线程像这样,在他们一直检查运行和暂停时会不会浪费大量资源?
最好的方法是不要显式启动和暂停线程。 你是对的,这是浪费时间。
当线程在流、生产者/使用者队列末尾或其他促进并发的数据结构上阻塞自身时,操作系统应自动完成线程暂停。