ExecutorService 简单使用

小弟我前段时间看了一下jdk的并发包。感受各类懵逼。每个能理解明白的。但仍是稍有体会一些的。java

这里记录一下ExecutorService 并发工具的使用吧。并发

简单的说呢,这个类,是能够对任务线程进行调度的。很是实用。能够经过Executors的的静态方法进行建立。这里以ExecutorService es = Executors.newFixedThreadPool(5);为例ide

意思是:建立一个指定容量的线程池,容量为5,而且使这5个线程始终处于活跃状态,当任务数量超过5个时,只能执行5个任务,剩下的任务,须要等池子中的线程将任务执行完毕后再执行,若是有线程由于执行任务失败而终止运行,则会有新的闲置线程取代他执行任务(会不会致使全部线程都执行失败而终止呢?)工具

public class ThreadPoolDemo {
	
	public static class MyTask implements Runnable{

		@Override
		public void run() {
			
			System.out.println(System.currentTimeMillis() + ":thread ID "
					 + Thread.currentThread().getId());
			
			try{
				Thread.sleep(1000);
			}catch(Exception e){
				e.printStackTrace();
			}
			
		}
		
	}
	
	public static void main(String[] args) {
		MyTask task = new MyTask();
		//线程池中的任务和数据属性时惟一的。有5个容量,一次就能执行5个。10个任务要分两次执行,
		//在ExecutorService没有shutDown时,线程池一直监控是否有任务,若是还有,则继续执行,什么时间执行不必定。
		ExecutorService es = Executors.newFixedThreadPool(5);
		for(int i = 0; i < 11; i++){
			es.submit(task);
		}
		
	}
相关文章
相关标签/搜索