繁体   English   中英

如何管理不间断运行的线程

[英]How to manage nonstop running threads

我正在开发一款应使n个线程连续运行的软件,因此我决定实施我能想到的最简单的解决方案:我的每个线程都在实现Runnable的类上定义,并且在主函数中启动他们全部。
最近,我发现我的一个线程无法启动,因此我认为我的代码根本不安全。

这是我的一个可运行对象的示例:

public class ExRunnable implements Runnable {

    @Override
    public void run() {
        printLog("ExRunnable started...");
        try {
            while (true) {
                ...
            }
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

而且,这是从main开始的方式:

public static void main(String[] args) {
        if (readConfigurationData()) {

            Thread exThread = new Thread(new ExRunnable());
            exThread.start();

            ...
        }
        else
            printLog("Invalid configuration data!");
    }

我在主函数中启动了大约12个线程,而其中只有一个似乎没有启动。 我想知道的是,我的方法是否确实不安全,以及是否可以为我提供更安全的模板。

非常感谢你!

您要实现的是线程池。 为什么不使用Java随附的一些现有线程池实现?

例如,下面是一些示例代码,该示例代码具有5个线程的线程池并每1秒调度一个线程:

ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);
ScheduledFuture<?> future = executor.scheduleAtFixedRate(() -> {
System.out.println("Thread running");
}, 0, 1000, TimeUnit.MILLISECONDS);

JavaDoc中的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM