版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
并发概念
•进程与线程
•线程安全
•临界资源
•竞争
・锁
•可见性
•原子性
•什么时候使用多线程
•无处不在的线程
什么时候使用多线程
线程安全
.专多个俵彩⑥娟杨向一个荚时,治果
■彳用老虎这些名怒的调度"文药外功,
苦虹调用方代恁彳需恁额外的协调,
恒个手的行为仍受立锦的,那小这个
英就受旗彩名全的。
临界资源与竞争
原子性
0
无处不在的线程
即使你们没有创建过任何线程,
也不能说线程和你无关
Servlet
Struts1的Action
0%
创建线程对象
newThread(){
©Override
publicvoidrun(){
)
};
newThread(newRunnable(){
publicvoidrun(){
)
});
线程启停
启动:
thread.start();
wait
join
sleep
停止1:停止2:InterruptibleChannel
thread.stop();thread.interrupt();
停止3:
while(lstop){
)
,n
0
stop=true;
等待线程结束
thread.join();
or
thread.join(IOOO);
FutureTask<lnteger>task=newFutureTask<lnteger>(newCallable<lnteger>(){
publicIntegercall()throwsException{
returnnull;
)
});
newThread(task).start();
Integerresult=task.get();
•显式锁
Locklock=newReentrantLock();lock.tryLock();
lock.lock();
try{lock.locklnterruptiblyO;
}finally{
lock.unlock();
}
读写锁
ReadWriteLocklock=newReentrantReadWriteLock();
Lockr=lock.readLock();
Lockw=lock.writeLock();
信号量
Semaphoresema=newSemaphore(3);
sema.acquire();
sema.releaseO;
等待和通知
Listlist;
thread1:
synchronized(list){
if(list.isEmpty()){
list.wait();
)
}
Thread2:
synchronized(list){
list.add(a);
list.notify();
}
0
等待和通知Condition
Locklock=newReentrantLock();
Conditionconditionl=lock.newCondition();
Conditioncondition2=lock.newCondition();
condition1.await();
condition1.signal();
0
可见性
•volatilebooleanstop
原子变量
•Atomiclnteger>AtomicBoolean>
AtomicReference
compareAndSet
decrementAndGet
集合类
•线程安全
Vector(ConcurrentModificationException
)Hashtable(
ConcurrentModificationException)
线程不安全
LinkedListArrayListHashMap
*,0
0%
并发集合类
•BlockingQueue
take()
•ConcurrentMap
putlfAbsentreplace(Kkey,VoldValue,VnewValue)
•ConcurrentLinkedQueue
非阻塞线程安全队列
•CopyOnWriteArrayList
多遍历,少插入
••n
0%
线程池
•Executors.newCachedThreadPool
Executors.newFixedThreadPool
•Executors.newSingleThreadExecutor
•Executors.newScheduledThreadPool
•ThreadPoolExecutor
ScheduledThreadPoolExecutor
••r>
0%
多线程系统设计
线程安全设计
•高性能线程设计
线程安全设计
•识别临界资源
•线程安全设计
识别临界资源
•JAVA语言内的临界资源
static的变量
类的成员变量
•即:一个类没有成员变量,也没有访问别的static的变量
,并且其函数的参数是线程安全的,那么这个类一定是线
程安全的。
线程安全设计
•不可变的类一定是线程安全的。
•控制变量的可见区域
控制使用在一个方法里
使用threadlocal方法
•最后考虑使用锁
*,0
0%
线程性能设计
•amdahl定律
•高性能设计方法
amdahl定律
0
提高并行度
影响并行度的因素
锁、同步
设计因素
尽量无锁并发
•合理设计,限定对象的作用范围
•尽量不要再搞所谓的对象池
structsl——>structs2
*,0
0%
合理的使用锁
Lor
•只锁必要的,减小锁的范围
•快进快出,不要锁10等慢的操作,如属竞
争资源,变更设计
分离锁,加大锁的数量,每个锁控制一部
分资源。
•锁不止影响并行度
加大java额外操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 增强地基承载力的技术措施与方案
- 2026福建漳州芗城区残疾人联合会招聘1人笔试备考题库及答案解析
- 2026江苏南京师范大学招聘48人(第一批)考试参考题库及答案解析
- 2026中国葛洲坝集团第一工程有限公司公开招聘11人笔试备考题库及答案解析
- 2026河北邢台市数字化城市管理服务中心公开招聘编外工作人员20名考试参考试题及答案解析
- 2026浙江宁波市鄞州区第二医院医共体茅山分院编外人员招聘1人考试备考试题及答案解析
- 教育整顿管理监督制度
- 新佳宜便利店监督制度
- 日常消毒管理监督制度
- 服务内部监督制度
- 水下焊接技术培训课件
- 2026年小红书运营账号人设差异化打造调研
- 大班幼儿劳动教育的现状与对策研究
- 2025年四川省绵阳市中考数学试卷附解析答案
- 2026年包头铁道职业技术学院单招职业适应性测试题库及答案解析(名师系列)
- 热性惊厥临床指南
- 中医药科研课题申报技巧
- 2025中国华电集团有限公司重庆分公司校园招聘(第一批)考前自测高频考点模拟试题附答案
- 检验检测机构内审检查表模板下载
- 花卉产业园项目可行性研究报告
- 煤矿安全操作规程课件
评论
0/150
提交评论