版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容提要多线程的同步同步代码块同步方法线程间的通信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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政雨水管道维护与保养方案
- 老旧小区公共广播更新项目可行性研究报告
- 牙槽嵴修整术规范化操作培训
- 桥梁工程施工安全管理规程
- 洁净实验室安全操作培训课件
- 老厂区屋顶运动场项目可行性研究报告
- 老旧管网非开挖修复项目可行性研究报告
- 烟气余热回收工程项目立项申请报告
- 企业办公区与厂区网络融合设计方案
- 外墙真石漆施工方案
- SAE USCAR-21-2024 中文版(汽车端子压接性能规范 完整标准 + 拉力与剖面测试)
- 二年级(上)语文1-8单元高频考点默写单
- 文旅研学基地研学导师培训与管理方案
- 2026年山东省大学生乡村医生专项计划招聘考试历年参考题库含答案详解
- 配电房安全操作与管理培训
- 第七章光致电子转移
- 2026招生计划物理类
- 2026年南阳市中心医院医护人员招聘笔试题库及答案解析
- 发热待查的中西医诊治专家共识课件
- 2026年部编版语文四年级上册第六单元教学设计
- 2026年陕西单招英语完形填空必刷题含答案省考试院命题风格
评论
0/150
提交评论