- 8
- 0
- 约4.15千字
- 约 9页
- 2018-10-11 发布于福建
- 举报
Java多线程同步机制的研究分析
Java多线程同步机制的研究分析
摘 要:Java多线程同步机制的应用有利于提高系统资源的利用率,改善系统的安全性。但是在多线程中最重要的问题是线程的同步和共享资源的访问保护。本文通过具有意义的售票系统的并发同步实例,对同步进行了探索。
关键词:Java 多线程 同步
中图分类号:G420 文献标识码:A 文章编号:1673-9795(2014)03(a)-0183-02
至今,随着计算机技术的飞速发展和互联网的大面积普及,多处理器计算机已经司空见惯,在这种前景下,Java虚拟机(JVM)提供了一个多线程机制。在Java语言的编程设计中使用多线程运行机制来支持多任务和并行处理,可以让在同一地址空间中执行多控制流,显著的提高程序效率。但是线程的同步问题和共享资源的访问保护是非常复杂的问题。
1 线程的同步机制
多线程的应用程序中,两个或两个以上的线程可以共享同一片存储空间,这带来方便的同时,也导致线程共享资源发生冲突,此时我们可以使用Java语言提供的同步机制(又叫互斥锁机制)来解决此冲突问题。该同步机制是使用synchronized关键字控制一段程序代码,这代码段称为互斥区或临界区。定义临界区的目的是在任一时间只有一个线程使用共享资源,保证多线程的并发执行。Java语言的每个对象(即类实例)都对应一把锁(Lock),临界区使用锁来互斥多线程进入临界区。每次只有一个线程获得锁进入临界区,其它没有获得锁的线程必须在就绪队列中等待,直到该锁被释放。synchronized关键字的使用方式有synchronized方法和块两种。
(1)synchronized方法:将访问共享资源的方法都标记为synchronized,然后该标记的方法来控制对类成员变量的访问。类实例和锁是一一对应的,当获得需要调用synchronized方法的类实例锁时,synchronized方法才可以执行,而且它开始执行直到完毕为止独占锁。这时其它调用synchronized方法的线程进入阻塞,一直到获得释放锁为止。定义同步方法语法格式如下:
public synchronized void 方法名(参数列表){
…//省略代码
}
(2)synchronized块:java语言中除了使用synchronized方法来设置同步,还可以使用synchronized块来设置同步。如果使用前者来修饰一个比较大的方法时,也会锁住了不需要锁住的字段,导致程序运行效率降低。后者是把程序的某段代码使用synchronized块来修饰,跟前者比它可以减少程序的同步区域。所以我们可以使用synchronized块来修饰语句块,能够弥补synchronized方法修饰的缺陷。定义同步块的语法格式如下:
synchronized(表达式)//表达式的结果是当前对象{
…//省略代码
}
从以上两种方法能够看出,关键字synchronized用来与对象的锁联系,当某个对象使用synchronized修饰时就意味着同步机制已启动,任一时刻只有让一个线程访问临界区资源,阻止其他线程访问该对象,即使出现阻塞和死锁现象,该对象的被锁定状态也不会解除。
2 同步机制在售票系统的实现
在现实生活当中也经常遇到多个线程共享同一个数据资源,典型的例子是火车票售票系统,来讲解线程共享资源。假设在售票厅内设10个售票窗口,每个售票窗口相当于一个线程,这些线程的共同访问资源为售票厅的100张票。若不设置同步机制代码如下:
public class Ticket {
public static void main(String[] args) {
Sell_Ticket st = new Sell_Ticket();//创建10个线程,每个线程代表一个售票口
for (int i = 0; i 10; i++) new Thread(st, 第 + i + 个窗口).start();
}
}
class Sell_Ticket implements Runnable {
int trainTicket = 100;//预售的票数
boolean flag = false;//循环控制标志
public void run(){
while (!flag) {// 当还有剩余票时继续售票
sellTicket(); }
}
public void sellTicket(){
if (trainTicket 0) {
System.out.println(Thread.currentThread().getName(
您可能关注的文档
- HSP22基因的研究.doc
- Hsp90α促进慢性难愈性创面愈合的作用的研究进展.doc
- HSPA+64QAM性能测试及部署的策略的研究.doc
- HSPA+LTE全球部署情况及运营商的策略分析.doc
- HSPA+R7物理层关键技术的研究.doc
- HS改良型聚苯模壳格构式混凝土墙体的探讨.doc
- HSPA+关键技术及网络升级的策略分析.doc
- HTC发展的现状及前景初探.doc
- HTC开启求生的模式.doc
- HTHP完井跨隔测试技术的应用的研究.doc
- 八年级语文下册na文言文阅读专练(二).pptx
- 2025年福建莆田秀屿区南日镇卫生院第一轮编外人员招聘2人笔试历年题库附答案解析.docx
- 八年级语文下册nb文言文阅读专练(一) (2).pptx
- 八年级语文下册n2 回延安 (5).pptx
- 2025年福建莆田秀屿区南日镇卫生院第一轮编外人员招聘2人笔试历年题库附答案解析.docx
- 2025年福建莆田市荔城区东洋中学代课教师招聘1人笔试试题附答案解析.docx
- 八年级语文下册nc文言文阅读专练(一) (3).pptx
- 2025年福建莆田市莆投智泊科技有限公司职业经理人招聘2人笔试历年题库附答案解析.docx
- 八年级语文下册ne写作 (2).pptx
- 2025年福建莆田市荔城区东洋中学代课教师招聘1人笔试备考题库附答案解析.docx
最近下载
- 北京市数字普惠金融赋能乡村振兴的影响机理研究国内外研究现状·.docx VIP
- 数字普惠金融赋能乡村全面振兴路径研究.docx VIP
- 数字普惠金融赋能湖南乡村振兴发展水平的实证研究.docx VIP
- 数字普惠金融赋能福建龙岩乡村振兴的实践与启示.docx VIP
- 以农村数字普惠金融赋能乡村振兴.docx VIP
- 1.最新高考英语高频词汇800词汇编(真题版)(1).pdf
- 数字普惠金融赋能河南省农村产业融合发展研究.docx VIP
- 数字普惠金融对乡村产业发展的赋能机制研究.docx VIP
- 2025年陕西青年职业学院单招笔试综合素质试题库含答案解析.docx VIP
- JSR26C32抗辐射四路差分接收器使用说明书.PDF VIP
原创力文档

文档评论(0)