线程池单例类

package com.study.googleplay.manager;

import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor.AbortPolicy;
import java.util.concurrent.TimeUnit;

public class ThreadManager {

	/**
	 * 线程池
	 * 
	 * @author TCL
	 * @date 2016-6-13
	 */
	private static ThreadPool threadPoolpool;

	public static ThreadPool getInstance() {
		if (threadPoolpool == null) {
			synchronized (ThreadManager.class) {
				if (threadPoolpool == null) {
					int threadCount = Runtime.getRuntime()
							.availableProcessors() * 2 + 1;// 线程个数
					threadPoolpool = new ThreadPool(threadCount, threadCount,
							1L);
				}
			}
		}
		return threadPoolpool;
	}

	public static class ThreadPool {
		private int corePoolSize;// 核心线程数
		private int maximumPoolSize;// 最大线程数
		private long keepAliveTime;// 休息时间
		private ThreadPoolExecutor executor;

		private ThreadPool(int corePoolSize, int maximumPoolSize,
				long keepAliveTime) {
			this.corePoolSize = corePoolSize;
			this.maximumPoolSize = maximumPoolSize;
			this.keepAliveTime = keepAliveTime;

		}

		public void execute(Runnable r) {
			// 参数1:核心线程数,参数2:最大线程数,参数3:休息时间,参数4:时间单位,
			// 参数5:线程队列参数6:生产线程的工厂,参数7:线程异常策略
			if (executor == null) {
				executor = new ThreadPoolExecutor(corePoolSize,
						maximumPoolSize, keepAliveTime, TimeUnit.SECONDS,
						new LinkedBlockingDeque<Runnable>(),
						Executors.defaultThreadFactory(), new AbortPolicy());
			}
			executor.execute(r);// 执行一个Runnable对象,具体执行时机由线程池说了算
		}

		// 取消任务
		public void cancel(Runnable r) {
			if (r != null) {
				// 如果任务还没开始,正在等待,可以通过 此方法移除,
				// 如果任务已经开始,需要在run方法中进行中断
				executor.getQueue().remove(r);// 从线程池中移除对象
			}
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值