Java 如何暂停newScheduledThreadPool?

Java 如何暂停newScheduledThreadPool?,java,javafx,Java,Javafx,我正在做一个java和scene builder应用程序,我将创建一个newScheduledThreadPool(1)。当我点击按钮时,下一步当我再次点击按钮时,执行者必须暂停,当我再次点击按钮时,执行者继续他的工作 这是我的代码: public class ExecutorThreadReadDatabase { static Logger logger = MyLog4J.getInstance(); private static boolean stopThread ; privat

我正在做一个java和scene builder应用程序,我将创建一个
newScheduledThreadPool(1)
。当我点击按钮时,下一步当我再次点击按钮时,执行者必须暂停,当我再次点击按钮时,执行者继续他的工作

这是我的代码:

public  class  ExecutorThreadReadDatabase {
static Logger logger = MyLog4J.getInstance();
private static boolean stopThread ;
private static ExecutorThreadReadDatabase executorThreadReadDatabase;
private ScheduledExecutorService executor;
public ExecutorThreadReadDatabase() {
    executor = Executors.newScheduledThreadPool(1);
}
public  static ExecutorThreadReadDatabase getInstance() {
    if (executorThreadReadDatabase == null) {
        logger.info("null");    
        return new ExecutorThreadReadDatabase();
    } else {
        logger.info("not nullo");
        return executorThreadReadDatabase;
    }
    }

public  void readToDatabaseFromNetworkServer() {
    logger.info("lo stop è : "+stopThread);
    executor.scheduleAtFixedRate(RunnableThread.getInstance(), 0, 5, 
TimeUnit.SECONDS);
}
public void stopT() {
    logger.info("stoppo l' executor");
    executor.shutdown();
    executor.wait()
}

对不起,我的英语不好

我认为最简单的方法是在
ExecutorThreadReadDatabase
中维护一个“暂停”标志,并将提交给执行者的
Runnable
包装在另一个
Runnable
中,在运行之前检查暂停标志的值:

public  class  ExecutorThreadReadDatabase {
  private volatile boolean paused = false;

  // ...

  public  void readToDatabaseFromNetworkServer() {
    logger.info("lo stop è : "+stopThread);

    RunnableThread rt = RunnableThread.getInstance();
    Runnable r = new Runnable() {
      @Override public void run() {
        if (paused) return;
        rt.run();
      }
    };

    executor.scheduleAtFixedRate(r, 0, 5, TimeUnit.SECONDS);
}

“暂停”线程池是什么意思?你的意思是跳过计划的执行吗?是的,直到我再次点击按钮。这确实是你在评论中所说的:你希望它跳过计划的执行。(恐怕你在这里的评论毫无意义。我知道英语不是你的母语,但你必须澄清你想说什么。)是的,对不起:(我希望执行者在我再次按下按钮之前不要使用内存..执行者中断计划,并在确认条件后再次恢复