JDK1.5多线程提高
1.名词:
1.任务的执行与任务的提交解耦
2.任务的执行策略-可中断,取消
2.线程封闭机制:
针对单线程池而言,提高任务执行的速度,但是无需锁定
3.饥饿死锁:
任务长期得不到执行,其实就是形成闭合的环路导致,共享资源互相锁定导致
4.超时机制:
指定时间任务完不成,则重新加入的线程的执行队列中等待重新执行(超时就是重试机制)
5.线程池的大小:
做好做成动态的,看CPU的线程数:Runntime.avalibleProcessors()
6.ExecutorService:
线程管理器其实就是一个ThreadPools,里面有线程,任务队列所以我们可以定制ThreadPoolsExecutor(个数,最大个数,空闲时间,任务队列,线程工厂,拒绝处理器)
空闲时间:线程没有被执行的时间间隔,如果一直未被使用,则进行回收
任务队列:用户提交的任务列表,其实就是缓存,等待线程执行---扩展点
线程工厂: 线程池随着需求进行动态创建线程的过程中所使用的线程工厂 ----扩展点
拒绝策略:针对用户提交任务的限制,因为队列是优先的---扩展点
线程工厂:定制特殊的线程
线程池:任务执行前后进行监控 beforeExecute afterExecute
7.队列:
有届队列:大小有限制,超过容量之后将会执行拒绝的执行器
无界队列:
同步移交:针对大队列,直接提交给执行线程
8.Caller-Run:一种饱和机制,任务执行在与Executor的所在线程,应用层进行排队执
9.控制线程池的任务提交的速率就是通过信号量机制进行限制
10.守护线程与非守护线程:(一些业务可以标识为守护线程,自动销毁)
11.
===========================================================
开发中的问题:
1.线程池大小动态设置
2.饱和策略
3.任务执行失败,重试策略
4.
JDK1.5多线程提高的更多相关文章
- [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)
[.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(二) 利用多线程提高程序性能(下) 本节导读: 上节说了线程同步中使用线程锁和线程通知的方式来处理资源共享问题,这 ...
- [.net 面向对象程序设计进阶] (17) 多线程(Multithreading)(二) 利用多线程提高程序性能(中)
[.net 面向对象程序设计进阶] (17) 多线程(Multithreading)(二) 利用多线程提高程序性能(中) 本节要点: 上节介绍了多线程的基本使用方法和基本应用示例,本节深入介绍.NET ...
- [.net 面向对象程序设计进阶] (16) 多线程(Multithreading)(一) 利用多线程提高程序性能(上)
[.net 面向对象程序设计进阶] (16) 多线程(Multithreading)(一) 利用多线程提高程序性能(上) 本节导读: 随着硬件和网络的高速发展,为多线程(Multithreading) ...
- jdk1.5多线程Lock接口及Condition接口
jdk1.5多线程的实现的方式: jdk1.5之前对锁的操作是隐式的 synchronized(对象) //获取锁 { } //释放锁 jdk1.5锁的操作是显示的:在包java.util.concu ...
- JAVA多线程提高十三:同步集合类的应用
1.引言 在多线程的环境中,如果想要使用容器类,就需要注意所使用的容器类是否是线程安全的.在最早开始,人们一般都在使用同步容器(Vector,HashTable),其基本的原理,就是针对容器的每一个操 ...
- JAVA多线程提高十四: 面试题
前面针对多线程相关知识点进行了学习,那么我们来来看看常见的面试题: 1. 空中网面试题1 package com.kongzhongwang.interview; import java.util.c ...
- lucene-利用内存中索引和多线程提高索引效率
转载地址: http://hi.baidu.com/idoneing/item/bc1cb914521c40603e87ce4d 1.RAMDirectory和FSDirectory对比 RAMDir ...
- JAVA多线程提高十二:阻塞队列应用
一.类相关属性 接口BlockingQueue<E>定义: public interface BlockingQueue<E> extends Queue<E> { ...
- JAVA多线程提高十一:同步工具Exchanger
Exchanger可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchanger 可能被视 ...
随机推荐
- show point on image
show point on image... for ( int i = 0; i < probp.size(); i++ ) { cv::Point pt = probp[i]; Distan ...
- SUST OJ 1642: 绝地求生—死亡顺序
1642: 绝地求生-死亡顺序 时间限制: 1 Sec 内存限制: 128 MB提交: 81 解决: 53[提交][状态][讨论版] 题目描述 最近陕西科技大学六公寓的小东同学深深的入迷了一款游戏 ...
- (11)shutil模块(文件处理模块)
shutil模块的格式 shutil.copyfileobj(文件1,文件2) #将文件1的数据覆盖copy给文件2 import shutil f1 = open("1.txt&quo ...
- synchronized (lock) 买票demo 线程安全
加锁防止多个线程执行同一段代码! /** http://blog.51cto.com/wyait/1916898 * @author * @since 11/10/2018 * 某电影院目前正在上映贺 ...
- GIT与VCS
GIT 是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制 ...
- 基于点线特征的Kinect2实时环境重建(Tracking and Mapping)
前言 个人理解错误的地方还请不吝赐教,转载请标明出处,内容如有改动更新,请看原博:http://www.cnblogs.com/hitcm/ 如有任何问题,feel free to contact m ...
- js代码中碰到的函数
第一个--->字符串的截取substring()方法 substring(a,b)--->[a,b)区间截取字符.下标从0开始.从a下标开始,截取到b下标的前一个字符.返回一个新的字符串 ...
- Properties类与配置文件
//加载文件public static void testLoadProperties() throws Exception { Properties properties = new Propert ...
- prisma 服务器端订阅试用
graphql 协议是支持数据的实时订阅功能的(一般基于websocket 进行实现) prisma 支持客户端订阅以及服务器端订阅(类似webhook),可以方便将 数据推送后端服务 目的 pr ...
- Oracle密码过期处理
问题:Oracle密码过期导致数据库无法访问 解决方案: 1.后台以数据库管理员身份登陆,服务器中打开cmd命令,然后输入 sqlplus / as sysdba 2.查看用户对应的proifle文件 ...