Java.util.concurrent.ExecutorServiceを使用したJavaスレッドの非同期実行

1332 ワード

Java非同期実行方法:
まず最も簡単なスレッドを作ってRunnableインタフェースを実現します
public class SimpleRunner implements Runnable
{
	int runIndex = 0;

	public void setRunIndex(int runIndex)
	{
		this.runIndex = runIndex;
	}

	public void run() 
	{
		try
		{
			//3        
			Thread.sleep((long) (Math.random() * 3000));
			System.out.println("start run:" + runIndex);
		} catch (InterruptedException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
          ExecutorService      
   
   
  
public class SimpleSync
{
	//     10       .
	final static ExecutorService exec = Executors.newFixedThreadPool(10);

	public static void main(String[] args)
	{
		System.out.println("Start first SYNC program.");

		//  10      
		for (int i = 0; i < 10; i++)
		{
			SimpleRunner runner = new SimpleRunner();
			runner.setRunIndex(i);
			exec.submit(runner);
		}
		
		exec.shutdown();//     
		
		System.out.println("Finish first SYNC program.");
	}
}

すると、 のような が られます.
Start first SYNC program. Finish first SYNC program. start run:4 start run:8 start run:2 start run:3 start run:0 start run:6 start run:5 start run:1 start run:7 start run:9
これにより,スレッドが で されていることが らかになり,テストクラスのmainメソッドはすでに している.