0
我有一個主類的應用程序,它爲幾個其他可運行類設置線程執行程序,但是我希望定期調用主類中的更新方法,所以最好創建一個類似於下面例子的線程,或者將類提交給內部聲明的線程執行程序(如下例所示)?Java線程執行程序提交主要類
使用線程執行程序和啓動標準線程的混合感覺錯誤。
對主類更新使用標準線程調用?
公共類的測試{
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
}
}
或使用線程執行人不僅其他可運行類,但主要的類本身?
公共類測試實現Runnable {
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
}
}
謝謝!
因此,將主類提交給一個線程池本身聲明是可行的嗎? – user3469157
是@ user3469157,這是不錯的做法。如果你有任何問題,那麼你應該把線程移動到一個內部類中,或者使用'main()'方法把它拉出到遠離類的外部類。 – Gray