JDK5.0 新機能:java.util.concurrentパッケージ2、schedule()
「12.1. スケジューリング」
まんま
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class C2008092700 implements Runnable { int number; long start; public C2008092700(int number, long start) { this.number = number; this.start = start; } public void run() { System.out.print("Task" + number + " Start"); System.out.println("(" + (System.currentTimeMillis() - start) + ")"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print("Task" + number + " End "); System.out.println("(" + (System.currentTimeMillis() - start) + ")"); } public static void main(String[] args) { ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor(); long start = System.currentTimeMillis(); for (int i=0; i<3; i++) { System.out.print("Task"+i+" Send "); System.out.println("(" + (System.currentTimeMillis() - start) + ")"); ex.schedule(new C2008092700(i,start),1000,TimeUnit.MILLISECONDS); } } }
で、
Task0 Send (10) Task1 Send (76) Task2 Send (89) Task0 Start(1061) Task0 End (2089) Task1 Start(2102) Task1 End (3119) Task2 Start(3131) Task2 End (4150) ...