ソケットを介して特定の TCP メッセージを送信するタスクを作成しました。一連のメッセージといくつかのタイムスタンプを含むファイルがあるので、タスクを TimerTask としてプログラムし、最初のメッセージのタイムスタンプを含むタイマーでスケジュールしました。
完了すると、タスクの実行メソッドは終了しますが、関連付けられたスレッドは残り、キャンセルされません。新しい時間でタスクを再スケジュールしようとすると、スケジュール済みまたはキャンセル済みのタスクを再スケジュールできないという例外が発生します。
また、再スケジュールする前にキャンセルしようとしましたが、明らかに、例外が言ったように、同じ問題のままです。
各メッセージには時間があり、一定ではないため、一定の周期でタスクをスケジュールして繰り返しさせることはできません。
TimerTask のスケジュールを変更するにはどうすればよいですか? ところで、ソケット通信のようにreadyメソッドでメッセージが来るまでブロックして、タスクの終了を待つ方法はありますか?