2014-09-06 15 views
5

Bizim uygulamada, çok fazla ThreadPoolExecutor s var. Uygulama boştayken, ThreadPoolExecutor s da boşta kalır, ancak uygulamadaki boştaki iş parçacıklarının sayısı çok yüksektir.ThreadPoolExecutor içinde allowCoreThreadTimeOut() ayarlamak iyi bir uygulamadır mı?

İş parçacığı dökümünde, iş parçacıklarının çoğunun görevler için bekleyen ThreadPoolExecutor ürününe ait olduğunu öğrendim. Bu işçi iplerini canlı tutmanın herhangi bir yan etkisi var mı? ThreadPoolExecutor numaralı telefondan setAllowCoreThreadTimeOut() kullanmalı mıyım, böylece çalışan ipler bir süre boşta kaldıktan sonra ölmeli mi?

cevap

3

Her iş parçacığının, bir miktar bellek gerektiren yapılandırılabilir bir yığını vardır (yapılandırılabilir). Konularınız bekleme durumundaysa (ve olmasalar bile), o hafızayı saklıyorlar. Uygulamanızın geri kalanı tarafından kullanılamaz. Bu nedenle, bu iş parçacığı (setAllowCoreThreadTimeout() ile), ayırdıkları belleği serbest bırakmak ve ThreadPoolExecutor'un gerektiği şekilde yeniden oluşturmasını sağlamak mantıklı olabilir.

İlgili konular