[英]Run timer without thread in java
我正在構建運行1000個(及更多)客戶端的模擬器,在每個要在X時間后運行任務的客戶端中,我嘗試了TimerTask
,問題是在每個任務(超過1000個)中創建了新線程。
是否有沒有線程的任務計時器?
您可以使用單個Timer調度多個TimerTask,但它們不能同時運行。 根據您的需要,這可能就足夠了。
但是,引用Timer的javadoc:
Java 5.0引入了
java.util.concurrent
包,其中的並發實用程序之一是ScheduledThreadPoolExecutor
,它是一個線程池,用於以給定的速率或延遲重復執行任務。 實際上,它是Timer
/TimerTask
組合的更通用的替代品,因為它允許多個服務線程,接受各種時間單位,並且不需要子類化TimerTask
(只需實現Runnable
)。 使用一個線程配置ScheduledThreadPoolExecutor
使其等效於Timer
。
如果要模擬1000個(和更多)同時執行的客戶端,則必須使用Thread
! 否則,您將只有一個線程,在其中您的確定邏輯將指定何時完成什么客戶端的邏輯-實際上不會模擬並行執行的客戶端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.