




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA多线程 概念线程应用线程状态线程属性线程同步Q A 概念 多任务系统进程线程 示例 单线程程序多线程程序 线程应用java lang Thread 使用线程的两种常用方式实现Runnable接口的run方法classMyRunnableimplementsRunnable publicvoidrun System out println hello MyRunnabler newMyRunnable Threadthread newThread r thread start 线程应用java lang Thread 2 继承Thread 覆盖run方法 不推荐 classMyThreadextendsThread publicvoidrun System out println MyThread runisrunning MyThreadt newMyThread t start Nevercallt run 线程状态Thread State NEW 新生 至今尚未启动的线程处于这种状态 RUNNABLE 可运行 正在Java虚拟机中执行的线程处于这种状态 BLOCKED 被阻塞 受阻塞并等待某个监视器锁的线程处于这种状态 WAITING 等待 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态 TIMED WAITING 计时等待 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态 TERMINATED 被终止 已退出的线程处于这种状态 线程状态 中断线程 Thread interrupt 该方法被调用时 线程的中断状态 boolean 将被置位 线程应不时的检查这个中断状态标志 以判断线程是否被中断 进一步决定如何响应中断 中断线程 Thread interrupt Publicvoidrun try while Thread currentThread isInterrupted morecondiitontocheck 线程任务代码 catch InterruptedExceptione 线程处于sleep或wait被中断 会导致该 异常产生 finally 清理工作 退出run方法 结束该线程 线程属性 线程优先级守护线程未捕获异常处理器 线程优先级 线程优先级高度依赖于操作系统 1 windows有7个优先级别 一些JAVA线程优先级将映射至操作系统优先级 2 在Sun为linux提供的JVM中 线程优先级被忽略请勿将程序构建为功能的正确性依赖于线程优先级 例 调度框架 守护线程 作用 为其他线程提供服务 例 1 计时线程 定时发送时间信号给其他线程 2 定期清空过时的缓存内容的线程当只剩下守护线程时 虚拟机就会退出设置方式thread setDaemon true 未捕获异常处理器 线程Run方法不能抛出任何被检测的异常不被检测的异常会导致线程终止 线程在死亡前 异常会被传递至一个用于未捕获异常的处理器中 Thread UncaughtExceptionHandlerthread setDefaultUncaughtExceptionHandler如果不为独立的线程设置处理器 则此时的处理器为该线程的ThreadGroup对象 线程组ThreadGroup 线程组是一个可以统一管理的线程集合ThreadGroup实现了Thread UncaughtExceptionHandler接口 它的uncaughtException方法执行以下操作 1 如果该线程组有父线程组 那么父线程组的uncaughtException方法被调用 2 否则 如果Thread getDefaultExceptionHandler方法返回一个非空值 则调用该处理器 3 否则 如果Throwable是ThreadDeath的一个实例 则不作任何处理 4 否则 线程的名字以及Throwable的栈踪迹被速出到System err上 线程组ThreadGroup 从JAVASE5 0起引入了更好的特性用于线程集合 java util concurrent 的操作 请不要在自己的程序中使用线程组 线程同步 竞争条件 RaceCondition 实现线程同步的方式Volatile域死锁 竞争条件 竞争条件 RaceCondition 在大多数实际的多线程应用中 根据线程的访问数据的次序 被多个线程共享访问 修改的对象可能会出现错误的情况 示例模拟一有若干账户的银行 随机地生成在这些账户之间转移钱款的交易 每个账户有一个执行交易的线程 每一个笔交易中 会从线程所服务的账户中随机转移一定数目的钱款到另一个随机账户 银行总钱数保持不变 竞争条件 示例分析假定两个线程同时执行指令 to值相同 Accounts to amount 这句不是原子操作 该指令实际可能被拆分成 可用命令javap c v ClassName 反编译查看字节码 1 将accounts to 加载至寄存器 CPU 2 增加amount 3 将结果写回accounts to 假定线程1执行步骤1 2 然后被剥夺运行权 此时线程2被唤醒并执行完以上3个步骤 修改同一个account to 然后线程1被唤醒继续完成其步骤3 实现线程同步的方式 锁对象条件对象synchronized关键字 锁对象 java util concurrent locks ReentrantLockprivateLockbankLock newReentrantLock bankLock lock Try criticalsection Finally bankLock unlock 条件对象 又称条件变量conditionalvariable通常 线程获得锁进入临界区后 却发现在某一条件满足之后才能继续执行 一个锁对象可以有一个或多个相关的条件对象 lock newCondition 条件对象 privateLockbankLock newReentrantLock privateConditionsufficientFunds bankLock newCondition bankLock lock Try while accounts from amount sufficientFunds await transferfundssufficientFunds signalAll Finally bankLock unlock synchronized关键字 publicsynchronizedvoidmethod methodbody 功能上等价于Locklock newReentrantLock Publicvoidmethod this lock lock try methodbody finally this lock unlock synchronized关键字 1 publicsynchronizedvoidmethod methodbody 2 publicsynchronizedstaticvoidmethod methodbody 3 Objectobj newObject publicvoidmethod synchronized obj methodbody Volatile 多处理器的计算机能够暂时在寄存器或本地内存缓存区中保存内存的值 结果是 运行在不同处理器上的线程可能在同一个内存位置取到不同的值 Volatile关键字为实例域的同步访问提供了一种免锁机制 可被看做是一种 程度较轻的synchronized 具有synchronized的可见性特性 但是不具备原子特性 Volatile 锁提供了两种主要特性 互斥 mutualexclusion 和可见性 visibility 互斥即一次只允许一个线程持有某个特定的锁 因此可使用该特性实现对共享数据的协调访问协议 这样 一次就只有一个线程能够使用该共享数据 可见性要更加复杂一些 它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的结合使用volatile和synchronized实现 开销较低的读 写锁 publicclassCheesyCounter privatevolatileintvalue publicintgetValue returnvalue publicsynchronizedintincrement returnvalue synchronized确保增量操作是原子的 并使用volatile保证当前结果的可见性 死锁 当两个或两个以上的线程在执行过程中 因争夺资源而造成的一种互相等待的现象 若无外力作用 它们都将无法推进下去 形成死锁的四个必要条件1 互斥使用 资源独占 一个资源每次只能给一个线程使用2 不可强占 不可剥夺 资源申请者不能强行的从资源占有者手中夺取资
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CNHAW 0009-2022儿童青少年近视精准防控临床中心基本要求
- 2025年医疗健康行业人工智能技术应用前景研究报告
- 2025年文化创意产业文化创意产品市场前景分析报告
- 2025年智能化交通系统发展趋势与市场前景研究报告
- 常山县2025年浙江衢州常山县“英才荟”事业单位紧缺急需人才招聘18人(事业编制)笔试历年参考题库附带答案详解
- 2025年区块链技术在物流行业的应用前景研究报告
- 天津市2025天津市地质矿产勘查开发局所属事业单位第二次招聘(含高层次人才)29人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025国家海洋信息中心考察对象笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国大洋矿产资源研究开发协会(中国大洋事务管理局)招聘应届毕业生拟笔试历年参考题库附带答案详解
- 南宁市2025广西南宁市良庆区经济贸易和信息化局招聘1人笔试历年参考题库附带答案详解
- 人教版高中地理必修第一册第一章宇宙中的地球第一节地球的宇宙环境练习含答案
- 星地激光通信技术-洞察分析
- 诊所中药饮片清单汇编
- 《室外管网工程施工》课件
- 餐饮外卖窗口改造方案
- 糖尿病足报告
- 国有企业战略使命评价制度
- 吊车施工专项方案
- 合规风险管理制度
- 病毒课件教学课件
- 9月30日烈士纪念日缅怀先烈功绩弘扬先烈精神课件
评论
0/150
提交评论