- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]java多线程
中等规模的并发程序设计 温绍锦 多核时代来临 硬件的多核时代已经来临 2007年4核,2008年8核,2010年16核,2011年32核 硬件促使软件发生变化 更好的并发程序设计框架 (executor、future、blocking queue) 更易用的算法、数据结构 (lock-free data structure) 并发程序设计将会变得简单而且逐步普及,按Herb Sutter的预测,这个过程为2007年~2012年 我们幸运处于这个变革中 旧时王谢堂前燕,飞入寻常百姓家 线程(一) 用户线程、内核线程、轻量级进程 三种映射模型 1:1、N:1、M:N三种映射模型 Java线程在Windows和内核线程一对一影射(_beginthread) Java在Linux下使用pthread实现。Phtread在linux下有两种实现,linux 2.6内核缺省使用NPTL。也是一对一影射。 Java在Solaris下使用多对多映射。(Solaris、HP-UX、True64 UNIX等操作系统本身支持M:N模型) 线程(二) 操作系统线程标准 POSIX Thread (PThread) 这是应用最广泛的线程库,在各个版本的unix、linux下均有实现。Linux早期的版本并不完全符合PThread标准,Linux 2.6内核缺省集成NPTL,完全符合PThread标准。 Win32和OS/2 Threads Win32 Threads提供大量线程通讯API,功能强大。 Solaris Threads DCE Threads 同步原语(一) 线程特定存储 ThreadLocal,又称为TLS、TSS、TSD等,在各文档中名称混乱。每个线程有唯一的标识,关联线程相关的特定数据,就是线程特定存储。 Monitor 中文翻译为管程。synchronized、Object.wait()、Object.notify()的底层实现。但是java原生提供的monitor不完整,因为没有提供Condition,Object本身隐含提供一个Condition。 同步原语(二) 条件变量 (Condition) 这是并发基本概念,在各种线程库中均有提供。Object对象隐含一个条件变量。 条件变量都提供三个原子操作wait、signal、broadcast。在java.util.concurrent.Condition中,对应的是await、signal、signalAll wait必须在signal之前,否则会导致信号丢失的问题 同步原语(三) 上下文切换 保存和恢复寄存器状态 保存和恢复线程Cache状态的开销。各线程在运行时彼此淘汰对方的cache数据。(CPU的缓存) 线程太多,会导致频繁的上下文切换,导致过多无谓的开销。 在阻塞等待的线程不参与调度,不会导致上下文切换 减少上下文开销的一个办法就是使用用户线程(纯java无法实现)。Oracle、MS SQL Server都是用用户线程,并宣称从用户线程中获得更好的性能。 同步原语(四) 死锁 ABA问题容易导致死锁 锁的粒度大,竞争严重,锁的粒度小,容易死锁,乃取舍问题 注意锁的顺序 需要考虑外部的锁,例如数据库的锁 死锁的解决办法 通过协议预防死锁的发生 允许系统进入死锁状态,然后检测恢复 忽视它的存在 分解 任务分解 不同的程序行为采用不同的线程执行 数据分解 多个程序对不同的数据块执行相同的操作 数据流分解 一个线程的输出作为另外一个线程的输入 Java传统的并发程序设计 使用原生的Java并发支持,wait()、notify()、synchronized 很难使用,容易导致程序结构混乱。 这些都是太低级别的API,容易导致性能问题 重新发明轮子太多 。(经常需要发明类似BlockingQueue、ReadWriteLock之类的轮子) java.uti.concurrent的目标 并发程序设计简单化 提供基本的并发类 包括Lock、Condition、Semaphore、Atomic等 提供线程安全的数据结构 ConcurrentLinkedQueue、ConcurrentHashMap 提供了一些常用的工具类 Thread pool、Scheduler、barrier、latch、blocking queue等 提供Atomic 为专家提供用于开发高级的lock-free算法 拜神 Executors (一) 这是一种任务分解。任务提供者和执行者 在本线程内完成,或者交给专门的Executor去执行。 Executor可以分为多种,或者允许指定运行策略 任务提供者和执行者之间需要一种通讯机制,用于: 等到任务执行结束(或者等待一段时间) 取消任务 等待时执行
您可能关注的文档
- [工学]Excel XP讲义.ppt
- [工学]Excel20 03的基本操作.ppt
- [工学]Excel讲义.ppt
- [工学]EndNote-X3使用教程.ppt
- [工学]Excel讲义14次.ppt
- [工学]FMEA讲义新.ppt
- [工学]fortran实验报告.doc
- [工学]FEM_ch3_ 弹性力学平面问题的求解简介.ppt
- [工学]flash入门教程第2课.ppt
- [工学]gch10醇和醚.ppt
- 2024年度党员干部专题组织生活会个人新四各方面对照检查材料3篇合集.docx
- 2023年民主生活会领导干部个人发言3篇范文.docx
- 第二批主题教育专题组织生活会普通党员个人对照检查材料合集2篇.docx
- 学习以案促改党纪教育专题组织生活会个人对照检查材料两篇.docx
- 党员领导干部2023年民主生活会“六个方面”个人对照检查材料3篇范文.docx
- 党员干部“严守纪律规矩 加强作风建设”组织生活会个人对照检查材料集合篇.docx
- 2024班子防治统计造假专题民主生活会对照检查材料两篇范文.docx
- 2024公司机关党支部教育专题组织生活会个人对照检查材料两篇.docx
- 2023年度专题民主生活会个人对照新6个对照方面检查材料3篇文稿.docx
- 2024第二批主题教育专题组织生活会对照检查材料2篇文本.docx
文档评论(0)