Я работаю над программированием сокетов в java.I должны использовать таймер в каждом соединении, и я использую таймер как следующий код:Что является наиболее рекомендуемым способом с помощью таймера в 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 для удаления задачи таймера. Но при использовании таймера, как это, иногда, запускает тысячи потоков таймера, потому что тысяча раз жива одновременно. Каков наилучший способ предотвратить эту проблему?