Java多线程和并发(十二),Java线程池

目录

1.利用Executors创建线程的五种不同方式

2.为什么要使用线程池

3.Executor的框架

4.J.U.C的三个Executor接口

5.ThreadPoolExecutor

6.线程池的状态

7.线程池大小如何选定

十二、Java线程池

1.利用Executors创建线程的五种不同方式

2.为什么要使用线程池

3.Executor的框架

4.J.U.C的三个Executor接口

5.ThreadPoolExecutor

虽然Executor提供的五种方法够用了,但是仍然不能满足

(1)ThreadPoolExecutor构造方法

(2)gandle参数

(3)新任务提交execute执行后的判断

6.线程池的状态

(1)线程池的状态

(2)线程池状态的转换

7.线程池大小如何选定

原文地址:https://www.cnblogs.com/xzmxddx/p/10362866.html

时间: 2024-08-27 04:46:14

Java多线程和并发(十二),Java线程池的相关文章

Java多线程与并发库高级应用-线程池

线程池 线程池的思想  线程池的概念与Executors类的应用 > 创建固定大小的线程池 > 创建缓存线程池 > 创建单一线程池(如何实现线程死掉后重新启动?) 关闭线程池 > shutdown 与 shutdownNow的比较 用线程池启动定时器 > 调用ScheduleExecutorService 的 schedule 方法,返回的ScheduleFuture对象可以取消任务. > 支持间隔重复任务的定时方式,不直接支持决定定时的方法,需要转换成相对时间方式.

“全栈2019”Java多线程第四十二章:获取线程与读写锁的保持数

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十二章:获取线程与读写锁的保持数 下一章 "全栈2019"Java多线程第四十三章:查询是否有线程在等待读写锁 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&quo

Linux C编程之二十二 Linux线程池实现

一.线程池实现原理 1. 管理者线程 (1)计算线程不够用 创建线程 (2) 空闲线程太多 a. 销毁 更新要销毁的线程个数 通过条件变量完成的 b. 如果空闲太多,任务不够 线程阻塞在该条件变量上 c. 发送信号 pthread_cond_signal 2. 线程池中的线程 (1)从任务队列中取数据 任务队列任务 执行任务 (2)销毁空闲的线程 让线程执行pthread_exit 阻塞空闲的线程收到信号: 解除阻塞          只有一个往下执行          在执行任务之前做了销毁操

Java多线程编程-使用JDK1.6的线程池

Java对多线程的支持还是比较给力的,JDK1.6里面有现成的API可用,一般的多线程应用足够了, 使用的时候注意最好加一层壳子,至少方便日志打印和后续扩展,以下是一个简单的启用的例子 1. 定义线程池变量 //线程池维护线程的最少数量: 2;//线程池维护线程的最大数量: 100;//线程池维护线程所允许的空闲时间: 2s;//线程池维护线程所允许的空闲时间的单位: TimeUnit.SECONDS; //线程池所使用的缓冲队列,队列大小为5//线程池对拒绝任务的处理策略:AbortPolic

线程学习--(十二)线程池

一.Executor框架 为了更好的控制多线程,jdk提供了一套线程框架Executor,帮助开发人员有效地进行线程控制.他们都在java.util.concurrent包中,是jdk并发包的核心.其中有一个比较重要的类:Executors,他扮演者线程工厂的角色,我们通过Executors创建特定功能的线程池. Executors创建线程池方法: newFixedThreadPool()方法,该方法返回一个固定数量的线程池,该方法的线程数始终不变,当有一个任务提交时,若线程池中空闲,则立即执行

Java多线程与并发——死锁与中断线程

过多的同步有可能出现死锁,死锁的操作一般是在程序运行的时候才有可能出现. 多线程中要进行资源的共享,就需要同步,但同步过多,就可能造成死锁. 死锁例子: package com.vince; /** * 线程死锁 * @author acer * */ public class DeadThreadDemo { public static void main(String[] args) { new DeadThread(); } } //顾客 class Customer{ public sy

Java多线程与并发应用-(4)-传统线程通信技术试题

package com.lipeng; public class LoopDemo { /** * 线程A循环10次,然后线程B循环100次,然后A再循环10次,然后B再循环100次.如此循环50次. * lipeng * 2015-4-10 * @param args */ public static void main(String[] args) { MyTask task=new MyTask(); RunA runA=new RunA(task); RunB runB=new RunB

Java多线程和并发(二),Thread中的start和run的区别

目录 1.调用run方法 2.调用start方法 3.start和run的区别 二.Thread中的start和run的区别 1.调用run方法 public class ThreadTest { private static void attack() { System.out.println("Current Thread is : " + Thread.currentThread().getName()); } public static void main(String[] a

“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第三十五章:如何获取线程被等待的时间? 下一章 "全栈2019"Java多线程第三十六章:如何设置线程的等待截止时间 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&qu

“全栈2019”Java多线程第四十六章:判断任意线程是否已持有写锁

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十六章:判断任意线程是否已持有写锁 下一章 "全栈2019"Java多线程第四十七章:判断锁是否为公平锁isFair() 学习小组 加入同步学习小组,共同交流与进步. 方式一:加入编程圈子. 方式二:关注头条号Gorhaf,私信"Java学习小组". 方式三:关