Java并发之ThreadPoolExecutor

一、ThreadPoolExecutor 简介

ThreadPoolExecutor 是一个可被继承 ( extends ) 的线程池实现,包含了用于微调的许多参数和钩子。主要参数如下:

(1) corePoolSize 核心线程数

(2) maximumPoolSize 最大线程数

(3) keepAliveTime 实例化超过 corePoolSize 的线程,在空闲状态下的存活时间

二、Executor实例化

(1) Executors.newSingleThreadExecutor()

Executors.newSingleThreadExecutor() 静态方法则创建另一种典型的只包含单个线程的 ThreadPoolExecutor 实例。

这种单线程执行程序是创建事件循环的理想选择。在这个单线程 ThreadPoolExecutor 实例中,属性 corePoolSize 和属性 maximumPoolSize 的值都为 1,而属性 keepAliveTime 的值为 0

(2)Executors.newFixedThreadPool()

Executors.newFixedThreadPool() 静态方法创建了一个 ThreadPoolExecutor ,它的参数 corePoolSizemaximumPoolSize 都是相等的,且参数 keepAliveTime 始终为 0 ,也就意味着此线程池中的线程数始终相同。

(3)Executors.newCachedThreadPool()

Executors 还提供了 Executors.newCachedThreadPool() 静态方法创建另一个预配置的 ThreadPoolExecutor。该方法创建的线程池没有任何核心线程,因为它将 corePoolSize 属性设置为 0,但同时有可以创建最大数量的额外线程,因为它将 maximumPoolSize 设置为 Integer.MAX_VALUE ,且将 keepAliveTime 的值设置为 60 秒。

三、线程实例

package day01;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 线程池
 * 
 * @author zc
 *
 */
public class ThreadPoolExecutorTest {
	
	public static void main(String[] args) {
		
		AtomicInteger  counter =  new  AtomicInteger();
		// 单线程
	    ExecutorService executor = Executors.newSingleThreadExecutor();
	    executor.submit(()->{counter.set(1);});
	    executor.submit(()->{counter.compareAndSet(1, 2);});
	   
	    //  固定大小的线程池
	    ThreadPoolExecutor executors = (ThreadPoolExecutor) Executors.newFixedThreadPool(2);
	    executors.submit(()->{Thread.sleep(1000);
	     return null;});
	    
	    executors.submit(()->{Thread.sleep(1000);
	     return null;});
	    
	    executors.submit(()->{Thread.sleep(1000);
	     return null;});
	    
	    // 没有核心线程的线程池
	   ThreadPoolExecutor executorCache = (ThreadPoolExecutor) Executors.newCachedThreadPool();
	   executorCache.submit(()->{Thread.sleep(1000);
	     return null;});
	   
	   executorCache.submit(()->{Thread.sleep(1000);
	     return null;});
	   
	   executorCache.submit(()->{Thread.sleep(1000);
	     return null;});
	 
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值