Java并发编程分享(学习资料)_第1页
Java并发编程分享(学习资料)_第2页
Java并发编程分享(学习资料)_第3页
Java并发编程分享(学习资料)_第4页
Java并发编程分享(学习资料)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高嵩Java并发编程分享大纲并发编程概述JMMJava Memory Model概述可见性有序性并发工具监控与跟踪为什么要学习并发编程?充分利用效劳器资源提高效劳吞吐量、降低响应时间爬虫、WebServer、日志分析分布式系统资源的争用、可伸缩性多线程的优点多线程的代价设计更复杂资源共享、数据一致性及可见性、调试困难性能开销锁、上下文切换内存开销贸然进行的性能优化顺序IO vs 随机IO的例子问题所有内存都是共享的吗?栈上分配的变量是线程平安的共享内存一定不是线程平安的吗?不一定,正确的同步 or 不可变对象 or 线程级别的资源锁的是谁?试试答复这些问题还有一题:大纲并发编程概述JMMJav

2、a Memory Model概述可见性有序性并发工具监控与跟踪JMM-抽象模型Sandy Bridge内存模型JMM-线程间通讯大纲并发编程概述JMMJava Memory Model概述可见性有序性并发工具监控与跟踪问题:可见性?写boolean型对其它线程马上可见吗?写引用对其它线程马上可见吗?12平安发布对象This溢出的例子防止this溢出13大纲并发编程概述JMMJava Memory Model概述可见性有序性并发工具监控与跟踪问题:有序性?代码顺序 = 程序执行顺序 ?单线程没有数据依赖的话:允许重排序多线程整体无序:i+线程内重排序:下面的例子线程间看到的顺序也不一致可见性导致

3、理想情况是什么?顺序一致性模型JMM-顺序一致性理想情况:正确同步下的真实情况JMM-重排序例1:JMM-重排序例2:Write Thread: 写-写Read Thread: 读-读JMM-重排序写-写 重排序JMM-重排序读-读 重排序JMM-重排序不同处理器上的重排序规那么JMM-重排序难以测试的原因测试环境和生产环境的JVM版本/硬件配置的不同不同生产环境的JVM版本/硬件配置的不同23大纲并发编程概述JMMJava Memory Model概述可见性有序性并发工具监控与跟踪并发编程带来的问题不能保证原子性JMM提供最低平安性,除了long /double不能保证可见性各个CPU独享的

4、工作内存不能保证有序性并发工具不可变类线程独享资源synchronized代码块、实例方法、静态方法volatile实例变量、静态变量CAS26synchronized锁的原理任何对象都有一个 monitor 监视器/管程与之关联,当且一个monitor 被持有后,它将处于锁定状态。27synchronizedsynchronized可以做到:可重入、互斥性、可见性synchronized不能做到:等待超时、可中断、公平性28可见性如何保证?JMM happens-before规那么线程中上一个动作及之前的所有写操作在该线程执行下一个动作时对该线程可见如果线程1解锁了monitor a,接着线

5、程2锁定了a,那么,线程1解锁a之前的写操作都对线程2可见happends-before有传递性如何应用happens-before29volatilevolatile可以做到:原子性、可见性volatile不能做到:复合操作的原子性:volatile引用指向对象属性/数组元素的可见性volatile提供:与锁一致的语义,并且比锁的开销小可见性如何保证?happened-before规那么:如果线程1写入了volatile变量v,接着线程2读取了v,那么,线程1写入v及之前的写操作都对线程2可见改造31Compare And Swap32AtomicInteger:public final i

6、nt getAndAdd(int delta) for (;) int current = get(); int next = current + delta; if (compareAndSet(current, next) return current; Compare And SwapCAS可以做到:原子性、可见性CAS的优点:无锁的复合操作CAS的缺点:竞争剧烈的情况下消耗CPU33CAS的使用场景引用替换AtomicReference状态记录AtomicBoolean统计AtomicInteger/AtomicIntegerArrayAtomicLong/ AtomicLongArr

7、ay34Lock可重入锁:ReentrantLock等待超时、可中断、公平性读写锁ReentrantReadWriteLock35ThreadPoolExecutorpoolSize不要过大BlockingQueue不要过大,考虑拒绝策略Callable有返回值、可抛出异常的RunnableFutureTask可取消的异步任务,平安的发布对象36数据结构支持HashMap - ConcurrentHashMapSortedMap - ConcurrentSkipListMapSet - CopyOnWriteArraySetSortedSet - ConcurrentSkipListSetQueue - BlockingQueueList - CopyOnWriteArrayList37SemaphoreCountDownLatch/CyclicBarrier38大纲并发编程概述JMMJava Memory Model概述可见性有序性并发工具监控与跟踪监控与跟踪监控工具jstack、jvisualvm跟踪ExceptionUtils.getStackTrace(new Throwable();出问题先

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论