拉風(fēng)的咖菲貓
2023-09-06 16:45:10
我正在創(chuàng)建一個調(diào)度程序并安排一個延遲 2 秒的作業(yè)。但在安排特定作業(yè)之前,我想檢查 ScheduledExecutorService 的池大小和隊(duì)列大小,但我找不到任何方法。任何人都可以向我建議如何在安排任何作業(yè)之前檢查 ScheduledExecutorService 的池大小和隊(duì)列大小。 //here i have created ScheduledExecutorService private static final ScheduledExecutorService SCHEDULED_EXECUTOR_SERVICE;static { //initialized ScheduledExecutorService with 30 pool size Scheduled_Executor_Service = (ThreadPoolExecutor) Executors.newScheduledThreadPool(30);}public void addTaskTOSchedule(){ //Here i want to check poolsize and queue size of SCHEDULED_EXECUTOR_SERVICE if //ScheduledExecutorService already used more then specific number thread then i will not schedule jobSCHEDULED_EXECUTOR_SERVICE.schedule(() -> { User user = new User(); SCHEDULED_EXECUTOR_SERVICE.execute(user); }, 2000, TimeUnit.MILLISECONDS);}
1 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個贊
ScheduledExecutorService 接口不允許訪問內(nèi)部隊(duì)列。您必須將服務(wù)轉(zhuǎn)換為實(shí)現(xiàn)類才能獲取隊(duì)列的大小,如下所示:
ScheduledExecutorService Scheduled_Executor_Service = Executors.newScheduledThreadPool(30);
if (Scheduled_Executor_Service instanceof ScheduledThreadPoolExecutor) {
ScheduledThreadPoolExecutor implementation = (ScheduledThreadPoolExecutor) Scheduled_Executor_Service;
int size = implementation.getQueue().size();
}
添加回答
舉報
0/150
提交
取消