繁体   English   中英

Java线程执行器提交主类

[英]Java Thread Executor Submit Main Class

我有一个带有主类的应用程序,该应用程序为其他一些可运行类设置了线程执行程序,但是我也希望定期调用主类中的更新方法,因此最好像下面的示例中那样创建线程或提交在其中声明的线程执行程序的类(类似于示例下方的示例)?

混合使用线程执行器和启动标准线程会感到错误。

使用标准线程调用进行主类更新?

公开课测试{

private ScheduledExecutorService scheduledThreadPool; //used for creating other threads
private Thread t;

public Test() {
    t = new Thread() {
        @Override
        public void run() {
            try {
                while (true) {
                    processUpdates();
                    Thread.sleep(10);
                }
            } catch (InterruptedException e) {
                logger.error(e);
            }
        }
    };
}

private void processUpdates() {
    //do some stuff
}

}

还是将线程执行程序不仅用于其他可运行类,还用于主类本身?

公共类测试实现了可运行的{

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

public Test() {
    scheduledThreadPool.scheduleWithFixedDelay(this, 0, 10, TimeUnit.MILLISECONDS);
}

@ Override
public void run() {
    processUpdates();
}

private void processUpdates() {
    //do some stuff
}

}

谢谢!

始终在普通的旧线程上使用线程池 :它使您可以更好地控制线程的执行。

如果希望所有线程并行运行,则始终可以使用无限线程池,因此不建议使用此线程池,因为Thread在内存中的开销很大。

在您的情况下,甚至建议使用ScheduledExecutorService因为它避免了线程实现中的sleep指令。 它具有更好的性能和更好的可读性。

暂无
暂无

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

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