[英]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.