1. 程式人生 > >Java 之 執行緒池

Java 之 執行緒池

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

public class ThreadPoolDem01 {
	public static void main(String[] args) {
		ExecutorService pool=Executors.newFixedThreadPool(2);
		
		Run r1=new Run("A");
		Run r2=new Run("B");
		Run r3=new Run("C");
		Run r4=new Run("D");
		Run r5=new Run("E");
		/*
		 * 每次只執行兩次
		 * 會按照新增的順序執行
		 * 要注意的r5執行完之後不會停止,因為可能會有其他的執行緒在執行
		 * 所以執行緒池比較耗能
		 */
		pool.execute(r1);
		pool.execute(r2);
		pool.execute(r3);
		pool.execute(r4);
		pool.execute(r5);
                pool.shutdown();
	}
}

class Run implements Runnable{
	private String name;
	public Run(String name) {
		this.name=name;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=1;i<=10;i++) {
			System.out.println(name+":"+i);
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
}