import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; /**
* 线程池的管理类,单例
*/ public class MyThreadPoolManager { private MyThreadPoolManager(){} private static MyThreadPoolManager instance ; public synchronized static MyThreadPoolManager getInstance() {
if(instance == null) {
instance = new MyThreadPoolManager();
}
return instance;
} //线程池 线程池的使用场景:用一个线程池来管理一个模块,比如线程池管理下载的模块
//如果使用线程池来管理这个程序中所有的子线程,有可能会造成最基本的功能(网络数据的加载)都使用不了了
private ThreadPoolExecutor executor; //线程池中存放的是线程,我们对于线程池需要做什么操作呢?
//我们所需要做的事情就是往线程池里面丢任务
//Thread
//Runnable
public void execute(Runnable r){
if(executor == null) {
/**
int corePoolSize,核心线程的数量,在正常情况下,线程池中同时运行的线程的数量
int maximumPoolSize,最大线程的数量,在非正常的情况下(等待区域满了的情况下),线程池中同时运行的线程的数量
long keepAliveTime,空闲时间 5
TimeUnit unit,空闲时间的单位
BlockingQueue<Runnable> workQueue,等待区域
ThreadFactory threadFactory,线程创建的工厂
RejectedExecutionHandler handler 异常处理机制
*/
executor = new ThreadPoolExecutor(
3,5,0,
TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(20),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
int cpuCount = Runtime.getRuntime().availableProcessors();
int corePoolSize = cpuCount*2 + 1; }
//把任务丢到线程池里面去
executor.execute(r); } public void cancle(Runnable runnable) {
if(executor != null) {
executor.getQueue().remove(runnable);
}
}
}

线程池的管理类MyThreadPoolManager的更多相关文章

  1. ExecutorService实际上是一个线程池的管理工具

    在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用 Thread的start()更好.在新特征 ...

  2. C#线程篇---线程池如何管理线程(6完结篇)

    C#线程基础在前几篇博文中都介绍了,现在最后来挖掘一下线程池的管理机制,也算为这个线程基础做个完结. 我们现在都知道了,线程池线程分为工作者线程和I/O线程,他们是怎么管理的? 对于Microsoft ...

  3. 高并发之——不得不说的线程池与ThreadPoolExecutor类浅析

    一.抛砖引玉 既然Java中支持以多线程的方式来执行相应的任务,但为什么在JDK1.5中又提供了线程池技术呢?这个问题大家自行脑补,多动脑,肯定没坏处,哈哈哈... 说起Java中的线程池技术,在很多 ...

  4. 【高并发】不得不说的线程池与ThreadPoolExecutor类浅析

    大家好,我是冰河~~ 今天,我们一起来简单聊聊线程池中的ThreadPoolExecutor类,好了,不多说了,开始进入今天的正题. 一.抛砖引玉 既然Java中支持以多线程的方式来执行相应的任务,但 ...

  5. 线程池之ThreadPool类与辅助线程 - <第二篇>

    一.CLR线程池 管理线程开销最好的方式: 尽量少的创建线程并且能将线程反复利用(线程池初始化时没有线程,有程序请求线程则创建线程): 最好不要销毁而是挂起线程达到避免性能损失(线程池创建的线程完成任 ...

  6. 转载 线程池之ThreadPool类与辅助线程 - <第二篇>

    http://www.cnblogs.com/kissdodog/archive/2013/03/28/2986026.html 一.CLR线程池 管理线程开销最好的方式: 尽量少的创建线程并且能将线 ...

  7. 高级java必会系列一:常用线程池和调度类

    众所周知,开启线程2种方法:第一是实现Runable接口,第二继承Thread类.(当然内部类也算...)常用的,这里就不再赘述. 一.线程池 1.newCachedThreadPool (1)缓存型 ...

  8. 如何应用CLR线程池来管理多线程

        class Program     {         static void Main(string[] args)         {             int intWorkerT ...

  9. 最强大的Android线程池框架

    背景 大家都知道在我们的开发中永远都离不开多线程,对于我们为什么要使用多线程,多线程的使用和多线程的一些基础知识这里我们就不讲了,有兴趣的朋友可以去看一下博主之前的几篇文章: 线程你真的了解它吗 这才 ...

随机推荐

  1. adb进阶知识,如何过滤只查看某一个app的日志

    前面大概学习了adb基础,但是adb的存在,在测试人员中究竟有什么必要,以及看log时,那么多的log,让我们看个屁啊,所以这一次,我决定一定要把adb这件事情搞清楚.   1.先来看最感兴趣的adb ...

  2. pl_sql例题

    0. 准备工作: set serveroutput on hellowrold 程序 begindbms_output.put_line('hello world');end;/ [语法格式]--de ...

  3. 基于Zabbix 3.2.6版本的Discovery

    作用:用于发现某IP网段内存活并且满足一定条件的主机,发现后进行加入到zabbix server进行监控. 操作步骤: 创建[自动发现规则] 为新建的自动发现规则创建[Action]   操作步骤图文 ...

  4. oracle服务端字符集

    一.oracle服务端字符集 SQL> select userenv('language') from dual ; USERENV('LANGUAGE')------------------- ...

  5. css 规范标签

    页头:header 登录条:loginBar 标志:logo 侧栏:sideBar 广告:banner 导航:nav 子导航:subNav 菜单:menu 子菜单:subMenu 搜索:search ...

  6. k8sIngress资源

    k8s提供了两种内建的云端负载均衡机制用于发布公共应用,一种是工作于传输层的service资源,它实现的是TCP负载均衡器,另一种是Ingress资源,它实现的是HTTP(S)负载均衡器. 1)TCP ...

  7. mysql数据库之 存储引擎、事务、视图、触发器、存储过程、函数、流程控制、数据库备份

    目录 一.存储引擎 1.什么是存储引擎? 2.mysql支持的存储引擎 3. 使用存储引擎 二.事务 三.视图 1.什么是视图 2.为什么要用视图 3.如何用视图 四.触发器 为何要用触发器 创建触发 ...

  8. vue 绑定class、v-bind:style(对象语法、数组语法)

    绑定 HTML Class 我们可以传给 v-bind:class 一个对象,以动态地切换 class: 内联样式在模板里 <div id="div1" :class=&qu ...

  9. TTTTTTTTTTTTTTTT POJ 2723 楼层里救朋友 2-SAT+二分

    Get Luffy Out Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8211   Accepted: 3162 Des ...

  10. TC-SRM391-div2-SortingGame(BFS,STL)

    Problem Statement for SortingGame Problem Statement In The Sorting Game, you are given a sequence co ...