juc线程池原理(六):jdk线程池中的设计模式
一、jdk中默认线程池中的代理模式
单例类线程池只有一个线程,无边界队列,适合cpu密集的运算。jdk中创建线程池是通过Executors类中提供的静态的方法来创建的,其中的单例类线程池的方法如下:
public static ExecutorService newSingleThreadExecutor()
{
return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue()));
} public static ScheduledExecutorService newSingleThreadScheduledExecutor()
{
return new DelegatedScheduledExecutorService(new ScheduledThreadPoolExecutor(1));
}
说明:
1、newSingleThreadExecutor的代理模式类图如下:

new ThreadPoolExecutor()实例是被代理对象作为参数传给代理对象FinalizableDelegatedExecutorService,通过代理对象限制对ThreadPoolExecutor进行参数化调整。
2、newSingleThreadScheduledExecutor的代理模式类图如下:

new ScheduledThreadPoolExecutor(1)实例是被代理对象作为参数传递给代理对象DelegatedScheduledExecutorService,通过代理对象限制对ThreadPoolExecutor进行参数化调整。
juc线程池原理(六):jdk线程池中的设计模式的更多相关文章
- juc线程池原理(四): 线程池状态介绍
<Thread之一:线程生命周期及五种状态> <juc线程池原理(四): 线程池状态介绍> 线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态.线程池也有5种状态 ...
- JDK和Spring中的设计模式
创建型 1)工厂方法 Collection.iterator() 由具体的聚集类来确定使用哪一个Iterator 2)单例模式 Runtime.getRuntime() 3)建造者模式 StringB ...
- JDBC连接池原理、自定义连接池代码实现
首先自己实现一个简单的连接池: 数据准备: CREATE DATABASE mybase; USE mybase; CREATE TABLE users( uid INT PRIMARY KEY AU ...
- C#线程学习笔记六:线程同步--信号量和互斥体
本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/23/Mutex_And_Semaphore.html,记录一下学习过程以备后续查用. ...
- Java 设计模式六原则及23中常用设计模式
一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...
- 从JDK源码角度看线程池原理
"池"技术对我们来说是非常熟悉的一个概念,它的引入是为了在某些场景下提高系统某些关键节点性能,最典型的例子就是数据库连接池,JDBC是一种服务供应接口(SPI),具体的数据库连接实 ...
- java多线程系列(六)---线程池原理及其使用
线程池 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 java多线程系列(三)之等待通知 ...
- Java并发编程之深入理解线程池原理及实现
Java线程池在实际的应用开发中十分广泛.虽然Java1.5之后在JUC包中提供了内置线程池可以拿来就用,但是这之前仍有许多老的应用和系统是需要程序员自己开发的.因此,基于线程池的需求背景.技术要求了 ...
- EntityFramework Core上下文实例池原理分析
前言 无论是在我个人博客还是著作中,对于上下文实例池都只是通过大量文字描述来讲解其基本原理,而且也是浅尝辄止,导致我们对其认识仍是一知半解,本文我们摆源码,从源头开始分析.希望通过本文从源码的分析,我 ...
随机推荐
- LeetCode第[19]题(Java):Remove Nth Node From End of List(删除链表的倒数第N个节点)
题目:删除链表的倒数第N个节点 难度:Medium 题目内容: Given a linked list, remove the n-th node from the end of list and r ...
- spring3: 4.4 使用路径通配符加载Resource
4.4.1 使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源. Ant路径通配 ...
- Ajax基础(一)--创建请求
浏览器创建ajax请求: 1.如果是Firefox.Opera.Safari等高级浏览器,可使用XMLHttpRequest()方式创建一个新的ajax请求对象. 如果是IE浏览器,则使用Active ...
- App如何推广秘籍之”渠道为王”
现在市场上主流的APP从开发环境和搭载系统上来区分主要分为三种类型,它们是适用于iphone手机的ios版本.适用于安卓手机的 android版本和适用于window phone的WP8系统.由于每个 ...
- JDeveloper 10g Certified on Windows 10 for EBS 12.1
JDeveloper 10g is now certified for Windows 10 desktops for Oracle E-Business Suite 12.1. See: Reco ...
- Mac PyCharm专业版破解
1. 先在PyCharm官网:http://www.https://www.jetbrains.com/pycharm/,下载PyCharm专业版安装包 2. 安装PyCharm 3. 终端执行: s ...
- 【zzulioj-1676】与同学比身高(综合)
题目链接: http://acm.zzuli.edu.cn/problem.php?id=1676 题目描述 新学年开学了,学校又迎来了一批新同学,已知部分同学之间的身高关系,请列出可推断出的同学之间 ...
- react-redux: counter
store: import {createStore,applyMiddleware, compose} from "redux"; import thunk from " ...
- Ubuntu下VirtualBox kernel driver not installed
解決方案: 1.sudo apt-get install virtualbox-ose-source2.cd /usr/src3.sudo tar xjvf virtualbox*.bz24.cd m ...
- Android event logcat的研究
经常有这样的需求:在程序A启动之后,在这个程序上覆盖一个界面,让用户输入密码后才能启动程序A,这类场景主要集中在安全软件中. 那应该怎样得知某某程序启动了,系统没有相应的广播,这很难知道程序启动了. ...