【Java】ExecutorService

ExecutorService の使い方」を参考に使用してみた。

まずは、スレッドプール内に1つのスレッドを作成して実行してみる。
Executors.newFixedThreadPool(1);として指定する。

package practice;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class PraExecutorService {
	public static void main(String[] args) {

		System.out.println("Entering main");

		ExecutorService exec = Executors.newFixedThreadPool(1);

		try {
			for (int i = 0; i < 10; i++) {
				exec.execute(new Runnable() {
					@Override
					public void run() {
						System.out.println(Thread.currentThread().getId());
					}
				});
			}

			System.out.println("Sleeping..." + Thread.currentThread().getId());
			Thread.sleep(15 * 1000);

		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		System.out.println("Exit main");

	}
}

結果は次のようにコンソールに出力された。
スレッドが1つで、スレッド番号は8であることがわかる。

Entering main
8
8
8
8
8
8
8
8
8
8
Sleeping...1
Exit main

次に、スレッドプール内に1つのスレッドを作成して実行してみる。
結果は下記の通り。

Entering main
Sleeping...1
9
9
9
9
9
9
11
8
10
12
Exit main

スレッド番号8,9,10,11,12の5つのスレッドが実行されていることがわかる。