版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
并发概念
•进程与线程
•线程安全
•临界资源
•竞争
・锁
•可见性
•原子性
•什么时候使用多线程
•无处不在的线程
什么时候使用多线程
线程安全
.专多个俵彩⑥娟杨向一个荚时,治果
■彳用老虎这些名怒的调度"文药外功,
苦虹调用方代恁彳需恁额外的协调,
恒个手的行为仍受立锦的,那小这个
英就受旗彩名全的。
临界资源与竞争
原子性
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年溅射压力传感器项目综合评估报告
- 2024至2030年中国隧道烘炉数据监测研究报告
- 2024年超细合金粉末项目评估分析报告
- 2024至2030年中国转台式自动抛丸机行业投资前景及策略咨询研究报告
- 2024至2030年中国聚氨酯管道数据监测研究报告
- 2024至2030年中国缸体曲轴箱芯数据监测研究报告
- 2024至2030年中国电脑母亲监护仪数据监测研究报告
- 2024至2030年中国涂层铝卷数据监测研究报告
- 2024至2030年中国桌边型碎纸机数据监测研究报告
- 2024至2030年中国手工制品手链行业投资前景及策略咨询研究报告
- 煤矿机电设备完好标准(87版)
- 结构化学期末复习-选择题
- 沟通英语听力原文Unit-2-NVC
- 斜井常闭式防跑车装置设计说明书
- 心理健康教育教学中的语言艺术文档
- 购买文件登记表.doc
- 弧长与扇形的面积教学设计范文
- 人教版小学六年级数学毕业升学试卷(附:试卷命题意图、参考答案及评分标准)
- 安全生产工作汇报材料 (4000字)
- 入团积极分子“推优入团”申请推荐表
- 线性代数在密码学中的应用
评论
0/150
提交评论