




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
并发概念
•进程与线程
•线程安全
•临界资源
•竞争
・锁
•可见性
•原子性
•什么时候使用多线程
•无处不在的线程
什么时候使用多线程
线程安全
.专多个俵彩⑥娟杨向一个荚时,治果
■彳用老虎这些名怒的调度"文药外功,
苦虹调用方代恁彳需恁额外的协调,
恒个手的行为仍受立锦的,那小这个
英就受旗彩名全的。
临界资源与竞争
原子性
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务与沟通考试题及答案
- 内陆养殖循环农业的水资源高效利用研究考核试卷
- 苯板试验室考试题及答案
- 晋煤面试试题及答案
- 电工复审考试题库及答案
- 城乡市场流通一体化推进
- 二级特许合同模板
- 2025-2031年中国汽车商业综合体行业市场全景调研及发展前景研判报告
- 代维考试试题、题库(室分题库)(选择)网络知识部分
- DB3411-T 0008-2022 公共图书馆服务外包要求
- 【公开课】牛顿第二定律+课件+-2024-2025学年高一上学期物理人教版(2019)必修第一册+
- 2024年江苏省响水县卫生局公开招聘试题带答案
- 粤港澳大湾区青少年国情教育实践基地(虎门渡口西岸物业提升改造项目)可行性研究报告
- 人教版三年级数学下学期期末复习试卷含答案10套
- 2024年7月三级老年人能力评估师练习题库(含参考答案解析)
- 华为员工招聘管理制度
- 天津市四校联考2023-2024学年高一下学期7月期末考试化学试卷(含答案)
- BIM技术在建筑项目施工工艺优化中的应用报告
- 2025年中级会计考生资源分享及答案
- 2025年全国保密教育线上培训考试试题库及参考答案(完整版)附带答案详解
- 商场摊位购买合同协议
评论
0/150
提交评论