簡體   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