我正在使用 java 中的套接字编程。我必须在每个连接中使用计时器,并且我正在使用类似以下代码的计时器:
this.timeoutTask = new TimeoutTask();
this.timeoutTimer = Executors.newSingleThreadScheduledExecutor();
private void startTimer(ConnectionState state) {
int period;
connectionState = state;
period = connectionState.getTimeoutValue();
future = timeoutTimer.scheduleAtFixedRate(timeoutTask, period, period, TimeUnit.MILLISECONDS);
}
private void stopTimer() {
if (timeoutTimer != null) {
future.cancel(true);
}
}
private void shutdownTimer() {
timeoutTimer.shutdown();
timeoutTask.cancel();
}
我正在使用“stopTimer”函数来暂停定时器和“shutdownTimer”函数来删除定时器任务。但是当像这样使用定时器时,有时会运行数千个定时器线程,因为数千个时间同时存在。防止此问题的最佳方法是什么?