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进行参数化调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Code First :使用Entity. Framework编程(6) ----转发 收藏

Chapter6 Controlling Database Location,Creation Process, and Seed Data 第6章 控制数据库位置,创建过程和种子数据 In previous chapters you have seen how convention and configuration can be used to affect the model and the resulting database schema.…

Hashtable的测试

Hashtable的测试 1 import java.util.Enumeration;2 import java.util.Hashtable;3 4 class TT {5 private String name null; //name和age是作为键的6 private Integer age 0;7 8 public TT(String name,int age) { //构造函数没有返回值9 this.nam…

截取AVI格式的视频C语言代码

首先在阅读本代码之前百度一下avi,虽然经过我验证上面有部分错误,但是不影响阅读。因为有些变量的注释我没有写,所以请读者自行搜索吧。下面是c语言文件,编译之后能够直接运行,用来截取开始时间(单位s&…

C语言宏定义中UL的含义

1、U表示 unsigned 无符号,L表示 long 长整数。后缀大小写都可以,可以单独使用(100U),也可以组合使用(100UL)。 2、F表示float,但是F不可以和U组合,因为浮点数没有unsigned。 3、后缀的作用是指明数据类型。因为单独…

查看CPU信息

1、查看物理cpu个数[rootwebserver ~]# cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l 11. 查看物理CPU的个数#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l2. 查看逻辑CPU的个数#cat /proc/cpuinfo |grep "processor"|wc …

计算多个文档之间的文本相似程度

首先我们上代码: from sklearn.feature_extraction.text import CountVectorizer corpus [ UNC played Duke in basketball, Duke lost the basketball game, I ate a sandwich ] vectorizer CountVectorizer(binaryTrue,stop_wordsenglish)#设置停用词为英语&…

判断操作系统的位数

#include<stdio.h>int main(void) {unsigned int num ~0;if (num 0xffffffff)printf("32");elseif (num 0xffff)printf("16");elseprintf("64");getchar();return 0; } 以上是判断一个操作系统是多少位的代码。 附另一种解法&#xf…

几个ubuntu16.04镜像下载地址

中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 阿里云开源镜像站 http://mirrors.aliyun.com/ubuntu-releases/16.04/ 兰州大学开源镜像站 http://mirror.lzu.edu.cn/ubuntu-releases/16.04/ 北京理工大学开源 http://mirror.bit.edu.cn/ubuntu-releases…

转】未指定 INSTANCESHAREDWOWDIR 命令行值。如果指定INSTANCESHAREDDIR 值,则必须指定该值 ....

插入光盘后不要用autorun的安装&#xff0c;使用命令行安装&#xff01;cd进安装光盘的根目录&#xff0c;输入命令&#xff1a;setup.exe /INSTALLSHAREDDIR"D://Program Files//Microsoft SQL Server//" /INSTALLSHAREDWOWDIR"D://Program Files (x86)//Micro…

C#使用StreamReader类读取文件文件

输入流用于从外部源读取数据。在很多情况下&#xff0c;数据源是磁盘上的文件或网络的某些位置。任何可以发送数据的位置都可以是数据源&#xff0c;比如网络应用程序、Web服务&#xff0c;甚至是控制台。 用来从文件中读取数据的类是StreamReader。同StreamWriter一样&#xf…

三种不使用中间参数,交换两个参数的值的方法

第一种&#xff1a;要求必须是整数 int i 50&#xff0c;j 60&#xff1b; i i^j; j i^j; i i^j;第二种&#xff1a;可以不是整数类型 i i j; j i - j; i i - j;第三种&#xff1a;很巧妙 i i j - (j i);

双边滤波

双边滤波 高斯滤波是最常用的图像去噪方法之一&#xff0c;它能很好地滤除掉图像中随机出现的高斯噪声&#xff0c;但是在之前的博客中提到过&#xff0c;高斯滤波是一种低通滤波&#xff08;有兴趣的点击这里&#xff0c;查看之前的博客&#xff09;&#xff0c;它在滤除图像中…

java代码做repeat次运算,从键盘输入几个数,比最值

总结&#xff1a;今天这个题目有点灵活&#xff0c;因为它不但要求输出结果&#xff0c;还要进行几次相同的输入&#xff0c;不退出循环 import java.util.Scanner;//从键盘一次输入更多的数&#xff0c;然后把每一次的数进行---可比较&#xff0c;或输出 public class ertyw {…

与C语言有关的面试题目

1. 用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个“标准”宏MIN&#xff0c;这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) < (B) …

用SQL语句更改数据库名,表名,列名

参考SQL Server联机丛书的 sp_renamedb与sp_rename一、更改数据库名sp_renamedb更改数据库的名称。语法sp_renamedb [ dbname ] old_name ,[ newname ] new_name 参数[ dbname ] old_name 是数据库的当前名称。old_name 为 sysname 类型&#xff0c;无默认值…

将区块链哈希转化为文字标题?IPSE哈希技术Hashlink解释

前言 在人类历史中&#xff0c;有多次的转化改变了信息文明走向。第一个是人类语言的诞生。将人类从抽象的声音识别交流转化为具体的文字交流。第二个是二进制的广泛使用。二进制是电子信息技术的巨大进步&#xff0c;让机器用0和1就能处理各类信息&#xff0c;二进制成就了今天…

Gabor滤波器原理

一、什么是Gabor函数&#xff08;以下内容含部分翻译自维基百科&#xff09; 在图像处理中&#xff0c;Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。研究发现&#xff0c;Gabor滤波器十分适合纹理表达和分离。在空间域中&#x…

Linux中的MAN命令

学习Linux的同学&#xff0c;都会使用man来查阅一些命令的帮助信息&#xff0c;常见的使用方法就是“man 命令名称”这样简单的格式。本文就对man命令简要介绍一下。 l man命令的章节 man就是manual的缩写&#xff0c;用来查看系统中自带的各种参考手册&#xff0c;但是手册页分…

java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)

oracle中procedure是不能有返回值的&#xff0c;要想返回值&#xff0c;就得有输出参数&#xff0c;同样要想返回记录集&#xff0c;可以把游标类型作为输出参数。 下面是详细情况说明&#xff1a; 一&#xff1a;无返回值的存储过程调用 存储过程&#xff1a; create or repl…

jeecms附件标签用法

[#if content.attachments?size gt 0] [#list content.attachments as attach] <a id"attach${attach_index}">附件下载</a> [/#list] [/#if] 转载于:https://www.cnblogs.com/Jeely/p/11195310.html