JDK5.0 新機能:java.util.concurrentパッケージ、newFixedThreadPool()
「11.3. スレッドプール」
まんま
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class C2008092500 implements Runnable { private String tab = ""; public C2008092500(int tab) { for (int i = 0; i <= tab; i++) { this.tab += " "; } } public void run() { for(int i = 0; i < 3; i++) { System.out.println(tab + i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args){ ExecutorService ex = Executors.newFixedThreadPool(2); System.out.println("[Sending Tasks....]"); for (int i = 0; i < 3; i++) { ex.execute(new C2008092500(i*3)); } System.out.println("[Finish Sending!]"); ex.shutdown(); System.out.println("[ShutDown]"); } }
で、
[Sending Tasks....] 0 [Finish Sending!] [ShutDown] 0 1 1 2 2 0 1 2