管理线程的最佳方式



在 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 中启动、暂停、恢复和停止线程的最佳方式是什么?如果有很多线程像这样,在他们一直检查运行和暂停时会不会浪费大量资源?

最好的方法是不要显式启动和暂停线程。 你是对的,这是浪费时间。

当线程在

流、生产者/使用者队列末尾或其他促进并发的数据结构上阻塞自身时,操作系统应自动完成线程暂停。

最新更新