【问题标题】:How can I create a Java restart task that will run if the process is exited or stopped?如何创建一个在进程退出或停止时将运行的 Java 重启任务?
【发布时间】:2021-10-10 20:07:46
【问题描述】:

我正在构建一个本地应用程序,每 10 秒获取一次在线订单,然后打印订单。

ScheduledExecutorService pool = Executors.newScheduledThreadPool(1); 
pool.scheduleWithFixedDelay(() -> { 
    Recever.getOrders();
}, 0, 10000, TimeUnit.MILLISECONDS); 
    

我需要确保这个过程永远不会停止。我的要求标准是,首先,如果它停止,它应该进入重新启动过程。其次,如果它停止 3 次,我想向用户发送一条警报消息。

【问题讨论】:

标签: java


【解决方案1】:

由于您只使用单个线程,您可能会发现自己创建线程更简单:

Runnable getOrdersRepeater = new Runnable() {
    @Override
    public void run() {
        try {
            Throwable error = null;

            for (int tries = 0; tries < 3; tries++) {
                while (true) {
                    try {
                        Recever.getOrders();
                    } catch (Throwable t) {
                        t.printStackTrace();
                        error = t;
                        break;
                    }

                    Thread.sleep(10000);
                }
            }

            alertUser("Failed three times to get orders: " + error);
        } catch (InterruptedException e) {
            System.err.println("Interrupted, exiting.");
        }
    }
};

Thread ordersThread = new Thread(getOrdersRepeater, "getOrders");
ordersThread.start();

如果要关闭它,请使用ordersThread.interrupt()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    相关资源
    最近更新 更多