簡體   English   中英

Java的Timer任務是否保證不會同時運行?

[英]Is Java's Timer task guaranteed not to run concurrently?

new Timer(...).schedule(task)

task保證在任何給定時間由單個線程運行嗎?

來自Javadoc

對應於每個Timer對象的是一個后台線程,用於按順序執行所有計時器的任務。 計時器任務應該快速完成。 如果計時器任務花費過多時間來完成,它會“占用”計時器的任務執行線程。 反過來,這可以延遲后續任務的執行,后續任務可以在緊急任務最終完成時(以及如果)快速連續地“聚集”並執行。

所以,是的,你得到一個新的線程(與調用者的線程分開)。 該計時器中的每個任務共享同一個線程。

每個Timer有一個單獨的線程,所以你的問題的答案是肯定的

確實。 它們都按順序對應於Timer對象的相同后台線程運行。 但是兩個不同的Timer實例將在不同的線程上運行(我相信),因此您必須保存對計時器對象的引用,以便按順序安排更多任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM