スケジューリングJDK5.0より指定した時間後に処理を実行したり、指定した周期で処理を実行するスケジューリングが可能になりました。スケジューリングを可能にするクラスは、java.util.concurrent.ScheduledExecutorServiceインタフェースを実装しています。スタティックなメソッドを利用することで、スケジューリングを行うことができます。Executorsクラスに用意されている、スケジューリングのためのExecutorは、次の二種類です。newSingleThreadScheduledExecutor()一つのスレッドでタスク処理を行う。newScheduledThreadPool()タスクを処理するスレッドの数を指定出来ます。スケジューリングを行うメソッドを以下で解説します。unit)指定した時間が経過したのちに第一引数で指定したタスクを実行します。時間の指定はTimeUnitクラスによって、秒、ミリ秒、マイクロ秒、ナノ秒の単位で定めることが出来ます。タスクを送信した時刻、タスクを開始した時刻、タスクが終了した時刻を表示するタスクを定義し、schedule()メソッドで送信します。(4031)タスクが送信されてから1000ミリ秒後になって、初めて処理が開始されていることがわかります。unit)タスクが送信されたのち、第二引数で指定した長さが経過すれば、タスク処理を開始します。その後、タスクは順に処理されます。タスク開始後、第三引数で指定した時間が経過していれば、タスク処理を再び開始します。Executorが取り消されるか、アプリケーションが終了するまでタスク処理を周期的に実行します。前項と同じタスクを使用します。}}これは次のように出力されます。Start(13028)...Task2が終了したのちに、Task0が再び実行されています。実行されるのは、タスクを送信してからinitialDelay+Delay秒後です。この段階でタスクが終了していなければ、タスクが終了したのちに、新たにタスクが実行されます。全てのタスクが終了していれば、initial+Delay秒後にタスクを再び処理します。その段階でタスクの処理が終了していなければ、全てのタスクを終了した後に、タスクの再処理を行います。処理中でないスレッドがあった場合でも、全てのタスクが終了するまで待機します。scheduleAtFixedRate()メソッドと基本的には変わりませんが、タスクの再実行のタイミングが違います。}}次のように出力されます。(15035)...引数のDelayは同じですが、実行されているのはTask0が終了してから10000ミリ秒後です。タスクが終了してから、再実行されるまでの期間を指定することが出来ます。指定した時間後にタスクの再処理を開始します。Textを触ってみた。