UNIX(多线程):22---几种常见的线程池

常见线程池

1、newSingleThreadExecutor

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

从构造方法来看,它可以单独执行,也可以与周期线程池结合用。其任务队列是LinkedBlockingQueue,这是个无界的阻塞队列,因为线程池里只有一个线程,就确保所有的任务都在同一个线程中顺序执行,这样就不需要处理线程同步的问题。这类线程池适用于多个任务顺序执行的场景。

2、newFixedThreadPool

创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

一个固定大小的线程池,可以用于已知并发压力的情况下,对线程数做限制。

这类线程池的特点就是里面全是核心线程,没有非核心线程,也没有超时机制,任务大小也是没有限制的,数量固定,即使是空闲状态,线程不会被回收,除非线程池被关闭,从构造方法也可以看出来,只有两个参数,一个是指定的核心线程数,一个是线程工厂,keepAliveTime无效。任务队列采用了无界的阻塞队列LinkedBlockingQueue,执行execute方法的时候,运行的线程没有达到corePoolSize就创建核心线程执行任务,否则就阻塞在任务队列中,有空闲线程的时候去取任务执行。由于该线程池线程数固定,且不被回收,线程与线程池的生命周期同步,所以适用于任务量比较固定但耗时长的任务。

3、newCache

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

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

相关文章

js正则表达式限制文本框只能输入数字,小数点,英文字母

1.文本框只能输入数字代码(小数点也不能输入)<input οnkeyup"this.valuethis.value.replace(/\D/g,)" onafterpaste"this.valuethis.value.replace(/\D/g,)"> 2.只能输入数字,能输小数点. <input οnkeyup"if(isNaN(value))execCommand(und…

UNIX(多线程):23---线程池注意事项和常见问题

使用线程池的注意事项 死锁任何多线程程序都有死锁的风险,最简单的情形是两个线程AB,A持有锁1,请求锁2,B持有锁2,请求锁1。(这种情况在mysql的排他锁也会出现,不会数据库会直接报错提示)。线程池中还有另一种死锁:假设线程池中的所有工作线程都在执行各自任务时被阻塞…

leetcode 178. 分数排名(SQL)

编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名&#xff08;Rank&#xff09;相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔”。 ----------- | Id | Score | ----------…

UNIX(多线程):24---哪些STL容器是线程安全的

在日常C++开发,少不了和STL,多线程打交道,那么在多线程下,哪些容器时线程安全的,那些不是? 好,这里就举一个简单的例子,我们先看看vector容器,相信你能看出一些问题: #include <iostream> #include <string> #include <algorithm> #inclu…

leetcode184. 部门工资最高的员工(SQL) 连接+嵌套查询

Employee 表包含所有员工信息&#xff0c;每个员工有其对应的 Id, salary 和 department Id。 --------------------------------- | Id | Name | Salary | DepartmentId | --------------------------------- | 1 | Joe | 70000 | 1 | | 2 | Henry | 80000 …

UNIX(多线程):25---当前进程的线程哪些数据共享哪些是私有的

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和…

UNIX(多线程):26---悲观锁和乐观锁

锁(Lock):在介绍悲观锁和乐观锁之前,让我们看一下锁。锁,在我们生活中随处可见,我们的门上有锁,我们存钱的保险柜上有锁,是用来保护我们财产安全的。程序中也有锁,当多个线程修改共享变量时,我们可以给修改操作上锁(syncronized)。当多个用户修改表中同一数据时,我…

leetcode511. 游戏玩法分析 I(SQL)

活动表 Activity&#xff1a; ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | ----------------------- 表的主键是 (player_i…

UNIX(多线程):27---多线程并发之原子操作与无锁编程

原子操作:顾名思义就是不可分割的操作,该操作只存在未开始和已完成两种状态,不存在中间状态; 原子类型:原子库中定义的数据类型,对这些类型的所有操作都是原子的,包括通过原子类模板std::atomic< T >实例化的数据类型,也都是支持原子操作的。 二、如何使用原子类…

leetcode512. 游戏玩法分析 II(SQL)

Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | ----------------------- (player_id, event_date) 是这个表…

UNIX(多线程):28---双buffer “无锁” 设计

在linux多线程环境下对同一变量进行读写时,经常会遇到读写的原子性问题,即会出现竞争条件。为了解决多个线程对同一变量访问时的竞争条件问题,操作系统层面提供了锁、信号量、条件变量等几种线程同步机制。如果对变量的每次访问都使用上述机制,由于系统调用会陷入内核空间,…

UNIX(进程间通信):01---Linux进程通信方式

Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,…

UNIX(进程间通信):02---父子进程之间的数据共享分析

之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享。接下来我们就来分析分析父子进程是否存在着数据共享。 我们都知道,在linux下,内存存储的位置是全局变量,栈区,堆区,以…

UNIX(进程间通信):03---僵尸进程

僵尸进程 僵尸进程是指一个已经终止、但是其父进程尚未对其进行善后处理获取终止进程的有关信息的进程,这个进程被称为“僵尸进程”(zombie)。 怎样产生僵尸进程 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zomb…

Oracle中关于计算时间差的例子:

今天在做项目的时候遇到了这样一个问题&#xff1a;就是要得到在线时长&#xff1a; 截图如下&#xff1a;最后要达到如下效果&#xff1a; 我之前想了一种方案&#xff1a;我想通过SQL语句查库&#xff0c;但是最后发现这种办法还解决不了&#xff0c;最后我又想了一种&#…

UNIX(进程间通信):04---孤儿进程

上一篇文章讲过僵尸进程,这里再分享给大家另外一种状态。 孤儿进程 什么是孤儿进程?当一个子进程还在执行时,它的父进程已经退出了,那么这个子进程的退出信息也没有被父进程接收到,如果子进程的退出信息没有被别的进程接收到,那么这个子进程就会变成一个僵尸进程,所…

UNIX(进程间通信):05---守护进程

守护进程是在后台运行不受终端控制的进程(如输入、输出等),一般的网络服务都是以守护进程的方式运行。守护进程脱离终端的主要原因有两点:(1)用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。(2)(如其他用户登录该终端后,以前的守护进程的错误信息不应…

leetcode570. 至少有5名直接下属的经理(SQL)

Employee 表包含所有员工和他们的经理。每个员工都有一个 Id&#xff0c;并且还有一列是经理的 Id。 ------------------------------------- |Id |Name |Department |ManagerId | ------------------------------------- |101 |John |A |null …

UNIX(进程间通信):16深入理解Socket

socket又叫套接字或者插口,它也是进程间通信的一种方式,实际上就是网络上的通信节点,应用程序只需要链接到socket就可以和网络上任何一个通信端点连接、传送数据。socket封装了通信的细节,我们可以不必关心通信协议内容而专注于应用程序开发。根据数据传送方式,socket分为…

苹果支付:如何解决沙盒环境下获取可恢复购买项为空

在传统手游开发中免不了和苹果支付打交道,而且苹果也会有各种奇奇怪怪的问题和BUG 。 曾经有一次某一个游戏出现了调单问题,现象如下(我有点懒,不想画泳道图或者时序图): 客户端拉起支付付款成功,OC底层收到支付成功回调->发送支付成功的收据到服务器验…