| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java多线程5---线程优化:线程池、锁优化 -> 正文阅读 |
|
[Java知识库]Java多线程5---线程优化:线程池、锁优化 |
一、线程池1、线程池优点? (1)提前创建多个线程放在线程池,使用时直接获取,使用完放回池中待用 ? ? ? ? ? ? 避免频繁创建销毁线程的内存资源消耗,实现线程的重复利用。 ? (2)提高响应速度---减少了创建新线程的时间 ? (3)便于线程的管理(容器思想) 2、线程池的具体实现--executorService? exexutor??(1)通过exexutors调用newFixedThreadPool创建固定大小的线程池对象,? ? ? ? ? ? ? ? ? ? ExecutorService ?类型的对象 (2)通过该对象调用execute()方法,将要启动的线程放入线程池 (3)关闭线程池--shutdown()
【注】? ??
? service.execute(new 线程)----该线程是继承runnable接口的,没有返回值 ? service.submit(new 线程)-----该线程是继承Callable接口的,有返回值
? ?shutdown---线程池的状态设为SHUTDOWN ? ? ? ? ? ? ? ? ? ? ? ?中断没有正在执行任务的线程,不中断未完成的线程 ? ?shutdownNow--线程状态改为STOP ? ? ? ? ? ? ? ? ? ? ? 尝试停止正在执行或暂停任务的线程,并返回等待执行任务列表,中断未完成的线程 3、线程池的核心参数
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 线程数超过此数时,会通过线程空闲时间进行线程销毁
? 当线程数<核心线程数---创建新线程 ? 当请求数>工作队列数--- 创建新线程? ? ? 当请求数>核心线程数----线程进入阻塞队列 ? 当线程数>核心线程数---按照线程空闲时间销毁线程 4、线程池执行过程
?【注】 ? ? ?在线程池中的线程数量超过corePoolSize时,每当有线程的空闲时间超过了keepAliveTime,这个线程就会被终止。直到线程池中线程的数量不大于corePoolSize为止。 ? ? corePoolSize:核心线程数----Java线程池中会长期保持corePoolSize个线程 ? ? maximunPoolSize:线程池最大线程数 参考:Java线程池核心线程数与最大线程数的区别_July的博客-CSDN博客_核心线程数和最大线程数 5、线程池的选择策略6、拒绝策略待补充? 【注】线程优化的重点:选择合适的线程池,并设置合适的核心参数 ? ? ? ? ? ?关注响应时间、线程性能、线程和内存使用情况等方面 二、锁优化1、自旋锁? ?通过忙循环形式自旋等待,而不是对线程频繁挂起
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 18:50:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |