线程池的作用

线程池:

所谓的线程池,就是将所有的线程都在同一个空间内管理,管理的是线程的数量,线程的创建,任务的分配

常见的线程池有好几种,我们来看一下看
线程池就是用于管理线程的,有四种线程池可用于管理线程
newSingleThreadExecutor 创建单个线程去执行所有的任务,超出的任务需要进行排队(FIFO)
newFixedThreadPool 创建指定大小的线程池,任务过多时需要排队
newScheduledThreadPool 创建指定大小的线程池,可以设置线程的执行时间与延迟时间,任务过多需要排队
newCachedThreadPoo 不限制线程的数量,对于不用的线程会回收,需要的时候直接创建

public static void main(String[] args) {
		//Executors.newFixedThreadPool(5)用于创建一个大小可以设置的线程池
		//Executors.newService线程池跟踪对象,需要知道每个线程都在干什么
		ExecutorService executors=Executors.newCachedThreadPool();
		//模拟多个任务存在时,查看线程的调度情况
		for(int i=0;i<1000;i++) {
			//加上sleep让线程有一个执行时间
			try {
				Thread.sleep(10);
			} catch (Exception e) {
				e.printStackTrace();
			}
			//execute()返回Exectutor类型,该类型时用于进行任务调度
			executors.execute(new Runnable() {
				//当前执行的线程是pool-1线程池名称,再创建一个线程就是pool-2
				@Override
				public void run() {
					System.out.println("当前执行的线程是"+Thread.currentThread().getName());
					
				}
				
			});
		}
	}

我们现在用这个大小可变的线程池来创建,有多个任务时,线程池会根据任务的数量和大小来创建足够的线程去处理

**

线程池的拒绝策略

**

当队列中的任务远超队列可容纳的任务数时,线程池中也给了四种任务拒绝策略:
AbortPolicy:默认策略,直接抛异常终止系统
CallerRunsPolicy:不拒绝、不处理,将其抛给主线程进行处理
DiscardOldestPolicy:将任务队列中等待时间最长的剔除掉,接收新的任务
DiscardPolicy:当任务队列已满时,就不再接收新的任务

注意点:两个点,一个是线程的管理方式,一个是拒绝策略,这个必须要知道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值