java.util.concurrent
'da sağlanan hiçbir şeyin bunu sizin için yapacağından şüpheleniyorum, çünkü zamanlanmış bir yürütme hizmetine ihtiyacınız varsa, genellikle yinelenen görevleri gerçekleştirmeniz gerekir. Yinelenen bir göreviniz varsa, genellikle iş parçacığınızı tutmak ve bir sonraki yineleme sırasında yeni bir tane oluşturmak yerine, aynı iş parçacığını etrafında tutmak ve bir sonraki işlem tekrarı için kullanmak daha mantıklı . Tabii
, zamanlanmış infaz tekrarlanmayan görevler arasında gecikmeler eklemek için kullanılabilir, ya da kaynaklar o kadar sınırlı, nüks o kadar, tüm konuları yıkmak mantıklı böylece seyrek olduğu bu durumlarda kullanılabilecek yeni çalışma geliyor. Bu yüzden, teklifinizin kesinlikle anlamlı olabileceği durumları görebiliyorum. Bunu uygulamak için, önbelleğe alınmış bir iş parçacığı havuzunu Executors.newCachedThreadPool
'dan tek iş parçacıklı zamanlanmış yürütme hizmetiyle (örn. new ScheduledThreadPoolExecutor(1)
) birlikte sarmayı denerim. Görevler, planlanan yürütme hizmeti aracılığıyla planlanabilir, ancak zamanlanmış görevler, tek iş parçacıklı programlanmış yürütücünüzü yürütmek yerine, tek iş parçacıklı yürütücünün bunları önbelleğe alınmış iş parçacığı havuzuna teslim etmesini sağlayacak şekilde sarılır. yürütme.
Bu tür bir uzlaşma, kesinlikle yapacak bir iş olmadığında en fazla bir iş parçacığı verir ve çok fazla şey olduğunda, gerektiğinde (sisteminizin sınırları dahilinde) çok fazla iş parçacığı verir. yapılacak iş
Sadece "ExecutorService" yerine "ScheduledExecutorService" arabirimini uygulamak istediğiniz dışında, Executors.newCachedThreadPool() 'dan bir" ExecutorService "gibi iş parçacıklarını oluşturan ve aşağıdakine düşüren bir şey istediğiniz gibi olur arayüz. Bu doğru bir özet mi? –
Aslında, evet, bu oldukça doğru bir özet. –