版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容提要多线程的同步同步代码块同步方法线程间的通信wait/notifyAll多线程的同步线程安全同步代码块同步方法线程安全当多个线程共享某数据资源时,就有可能发生不安全的情况。例程该程序的输出结果中竟有0号票,这是不对的。这是因为一个线程在if条件检查时当前票号还是正的,接下来该线程睡眠0.3秒,这期间另外一个线程可能已经继续卖票了,这时票号已减为0,0.3秒后该线程再继续卖票,这就是卖0号票了。这种情况称为线程不是安全的,为了线程的安全性,Java引入了多线程的同步机制。同步方式有两种:同步代码块和同步方法。同步代码块该同步方式的语法如下:synchronized(lockObject){
代码块...
}注意关键字synchronized后面有一个参数lockObject,其含义是同步代码块刚要执行时,先检查lockObject的锁(lock)是开的还是闭的(注意任何Java对象都有锁),若锁是开的,则线程首先把锁关闭,然后执行同步代码块中的所有语句,执行完毕后再把锁打开,若锁是闭的,则线程不执行同步代码块。由此可见,同步代码块的作用就是使代码块成为CPU执行的一个不可分隔的、最小颗粒度的原子操作。注意,lockObject对象必须是在多个线程之间共享的,即多线程的同步靠的是检查同一个对象的锁状态。例程同步方法同步方法的语法是用关键字synchronized来修饰方法头。例程同步方法也是靠检查同一个对象的锁状态,只不过这个对象在代码中没有明确体现,实际上是this对象。知道了这一点,就可以做到在代码块和方法之间同步。例程同步代码块与同步方法相比,建议优先使用同步代码块,因为同步方法的开销大、效率低。生产者和消费者可以分别用两个不同的线程来模拟,它们之间的通信就是等待与通知,java.lang.Object类提供了如下方法用于通信:(1)wait()。执行该方法的线程退出CPU,打开共享对象的锁,处于等待状态(即阻塞状态),等待其他线程的通知唤醒。(2)notify()。该方法通知并唤醒处于等待状态的所有线程中的一个,具体哪个不确定。(3)notifyAll()。该方法通知并唤醒处于等待状态的所有线程,这些被唤醒的线程根据优先级被调度。显然notify()不如notifyAll()好,因此建议使用后者而不是前者。由于线程的通信方法涉及了共享对象的锁,所以必须在线程的同步中进行通信。基于这些知识,我们就可以写出上面介绍的生产-消费信息例子的程序:例程运行上面的程序,输出结果表明:生产者与消费者一唱一和,非常协调。线程间的通信生产者-消费者(Producer-Consumer)模型生产者和消费者通过协作共同完成一件任务,生产者生产信息,消费者消费该信息,过程为:生产者生产一条信息,然后保存在某个地方,然后通知消费者来取信息,接下来生产者处于等待;消费者获取信息后,通知生产者不要再等待了,可以继续生产信息,接下来消费者处于等待状态。这样一直重复下去。小结多线程的同步同步代码块同步方法线程间的通信wait/notifyAll本章小结本章讲解了多线程编程的基本知识和方法:基本概念创建线程线程的生命周期前台、后台线程线程的分支、合并线程间的同步线程间的通信Java语言内置了多线程机制,较许多其他编程语言有着先天的优势。随着多核CPU时代的到来,并行计算必然会成为主流,多线程编程充满了诱惑,也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏苏州工业园区健康养老产业发展有限公司社会招聘11人笔试历年参考题库附带答案详解
- 2025-2030年中国季节性百货促销行业前景趋势预测及发展战略咨询报告
- 2025-2030年智能植物病虫害识别系统企业制定与实施新质生产力战略分析研究报告
- 2026广东深圳市龙岗区城市建设投资集团有限公司招聘岗位拟聘用人选笔试历年参考题库附带答案详解
- 2025-2030年智能灯片企业制定与实施新质生产力战略分析研究报告
- 2026四川绵阳科技城科技创新投资有限公司招聘战略投资部副部长等岗位综合笔试历年参考题库附带答案详解
- 2026南通醋酸纤维有限公司招聘30人笔试历年参考题库附带答案详解
- 2026云南省医药天马有限公司招聘笔试历年参考题库附带答案详解
- 2026中国移动贵州分公司春季校园招聘笔试历年参考题库附带答案详解
- 2026上海三毛保安服务有限公司招聘217人笔试历年参考题库附带答案详解
- 2025年专升本药学综合能力测试试卷(含答案)
- 李咏梅音标课件双元音ei
- 数字IC设计工程师面试题及答案
- 广西农村信用社考试历年真题
- 2025年郑州工业安全职业学院单招职业技能考试题库附参考答案详解黄金
- 饭店冷库施工方案
- 建设工程设计合同补充协议(GF-2015-0209)2025版
- 医疗美容设备售后服务质量提升工作方案
- 小班英语试题及答案
- 中国银行2025长春市结构化面试15问及话术
- 2025年社区工作者招聘考试(公共基础知识)试题及答案
评论
0/150
提交评论