簡體   English   中英

Java-線程池

[英]Java - thread Pool

我的預定線程池--->

private static ScheduledExecutorService pendingCheckScheduler = Executors.newScheduledThreadPool(1);

線程1 --->

private ScheduledFuture<?> pendingTranStatusCheckHandle=pendingCheckScheduler.scheduleAtFixedRate(new PendingTranStatusCheck(),0,checkForPendingTrans,TimeUnit.SECONDS );

線程2 --->

private ScheduledFuture<?> forcibleBatchCloseHandle=pendingCheckScheduler.schedule(new ForcibleBatchClose(), waitForPendingTrans, TimeUnit.MINUTES);

Thread 1每10秒執行一次。 Thread 2應該在30分鍾后啟動。

Thread 1的行為符合預期,而預期在30分鍾后開始的Thread2在1小時后開始。

是否在等待thread1正在促進這個問題?如果是這樣, thread2應該當線程1點結束考慮到我們在線程pool.Why只有一個線程被givcen優先級Thread2被拉伸過長后1小時開始?

我一無所知,希望有一些指點。請幫助我。

這是因為您在執行程序中只有一個線程。

Executors.newScheduledThreadPool(1);

它導致第二次Runnable等待,直到第一個Runnable完成。

嘗試使用兩個線程:

Executors.newScheduledThreadPool(2);

您的概念有些偏離,這抵消了您的結論。 您總共有一個線程 ,並且計划在該線程上運行兩個任務 因此,如果重復執行的任務長時間執行並占用線程,則絕對可以預期會有干擾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM