Java并发编程的执行器Executor

       Java SE5中java.util.concurrent包中的执行器将管理Thread.简要介绍一下:

1.CachedThreadPool:这是首选的,因为他会根据需要创建合理数量的线程:

ExecutorService exec=Executors.newCachedThreadPool();
		for(int i=0;i<10;i++){
		exec.execute(new MyRunnable());
		}
		exec.shutdown();
		
		System.out.println("main finished;");

 

//output:
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  1
runnable tag:  1
runnable tag:  0
runnable tag:  3
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  3
runnable tag:  3
runnable tag:  5
runnable tag:  5
runnable tag:  0
runnable tag:  0
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  1
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  2
runnable tag:  4
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  1
runnable tag:  1
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  6
runnable tag:  6
runnable tag:  0
runnable tag:  0
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  0
runnable tag:  0
runnable tag:  6
runnable tag:  3
main finished;
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  8
runnable tag:  8
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  2
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  9
runnable tag:  9
runnable tag:  6
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  8
runnable tag:  8
runnable tag:  6
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6

由结果可知,进程之间是抢占式的执行的。

 

2.FixedThreadPool:  这个可以控制线程池的线程数量,即指定线程数量;

		ExecutorService exec=Executors.newFixedThreadPool(5);
		for(int i=0;i<10;i++){
		exec.execute(new MyRunnable());
		}
		exec.shutdown();
		
		System.out.println("main finished;");

 运行结果和上一个类似。

 

3.SingleThreadExecutor  :  顾名思义是一个单线程执行器,对于连续运行的事物是很有用的。例如:监听进入的套接字连接任务或更新本地或者远程的日志。

		ExecutorService exec=Executors.newSingleThreadExecutor();
		for(int i=0;i<10;i++){
		exec.execute(new MyRunnable());
		}
		exec.shutdown();
		
		System.out.println("main finished;");

 运行结果是按照顺序的,一个一个的:

main finished;
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9

 //*****************************************************************************************************************************

package com.wjy.multithread;

public class MyRunnable implements Runnable{
	private static int num=0;
	private final int tag=num++;
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=0;i<10;i++){
			System.out.println("runnable tag:  "+tag);
		}
	}

}

 

你可能感兴趣的:(executor)