多個房間被鎖定,各需 5 分鐘後自動解鎖。問題:如何同時運行多個定時器?是否需要手動建立執行緒池?
java.util.Timer 內部維護單一背景執行緒,**schedule 方法提交的 TimerTask 會在該共享執行緒中循序執行**,**無需也不應**為每個房間另開執行緒。
Timer timer = new Timer(true); // daemon 執行緒,不阻止 JVM 退出
public void lockRoom(String roomId) {
// 業務邏輯:標記房間鎖定
timer.schedule(new TimerTask() {
@Override public void run() {
unlockRoom(roomId); // 5 分鐘後執行解鎖
}
}, 5 * 60 * 1000); // 延遲 5 分鐘
}
run() 內提交至 ExecutorService 非同步執行,或改用 ScheduledExecutorService 直接支援執行緒池。