Java多线程并发系统中的安全性与公平性

上传人:文*** 文档编号:62996079 上传时间:2022-03-16 格式:DOC 页数:4 大小:61KB
收藏 版权申诉 举报 下载
Java多线程并发系统中的安全性与公平性_第1页
第1页 / 共4页
Java多线程并发系统中的安全性与公平性_第2页
第2页 / 共4页
Java多线程并发系统中的安全性与公平性_第3页
第3页 / 共4页
资源描述:

《Java多线程并发系统中的安全性与公平性》由会员分享,可在线阅读,更多相关《Java多线程并发系统中的安全性与公平性(4页珍藏版)》请在装配图网上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! Java多线程并发系统中的安全性与公平性麻孜宁,伊浩,李祥摘要:多线程是Java的一个重要方法,特别有利于在程序中实现并发任务。Java提供Thead线程类,实现了多线程的并发机制。然而,程序的并发执行必定会出现多个线程互斥访问临界资源的局面,因而并发系统解决的关键就是对临界资源的管理和分配问题,而在进行临界资源分配时有两方面需要考虑,即安全性和公平性。文中首先讨论了多线程并发系统中的安全性与公平性问题,指出安全性与公平性在并发系统中访问临界资源时的重要性。并通过火车行驶单行隧道的实例,演示各种条件下的行驶情况来进一步说明该问题。O 引 言 :并

2、发即多道程序在同一CPU上分时运行,实现多个任务同时执行。但是系统的并发执行必然会引起线程在访问临界资源时冲突的产生,即多个线程同一时刻申请访问资源。因而并发系统需首要解决的就是对临界资源的管理和分配。然而在进行临界资源分配时有两方面需要,考虑,即安全性和公平性。文中通过火车行驶单行隧道的实例演示 ,模拟各种情况下所产生的结果来进一步说明并发系统中安全性与公平性的重要性,指出Java中对多线程的并发控制应该做到公平性和安全陛的理想兼容,两方面都不可忽视。l 并发系统的概念 :并发f ,通俗地讲,就是在某一时段同时发生几件事的现象,这是生活中很常见的。但是在计算机系统中,并发是相对于多道程序分时

3、地运行在同一个CPU 上而言的。如果在单CPU下同时运行几道程序,那么在宏观上,这几道程序是同时向前推进,但从微观上观察,则是由单CPU按照时间片轮流执行每个程序的一小部分代码,使每个程序都运行到程序的开始与结束之间的某一处。从逻辑上讲,这几道程序都在运行,但从CPU的执行轨迹上观察,却是轮地为每个程序执行一段时间,循环往复,直到所有程序依次完成。目前使用的计算机几乎都是单的机器,但是都能同时完成几件不同的工作,就是因为采用了CPU分时原理,因此逻辑上的并行称之为“并发”。为了提高系统的吞吐量,实现多个任务同时执行,在20世纪60年代提出了进程的概念,每个进程代表一个独立的任是系统可以进行分配

4、调度的基本单位。到80年代中期,人们又提出了比进程更小的能独立运行的基本单位 线程l3,用它来提高系统内程序并发执行的速度,从而可进一步提高系统的吞吐量。线程的引入减少了程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。线程是进程中的一个实体,是被系统独立调度和分配的基本单位。多线程的核 t2,在于多个代码块并发执行,本质特点在于各代码块之间的代码是乱序执行的。2 Java中的多线程并发执行中的安全性与公平性 :Java提供了线程类Thread,其中重要方法是run(),它为Thread类中的start()方法所调用,提供线程所要执行的代码。建立线程有两种方法:继承Thread类和实

5、现Runnable接口 。Java提供了线程类Thread,实现了多线程并发执行机制,在Java程序并发执行中,必定会出现多个线程互斥访问临界资源的局面,因而并发系统首要解决的关键就是对临界资源的管理和分配,同一时刻只有一个线程能够访问临界资源。然而在进行临界资源分配时有两方面需要考虑,即公平性和安全性。一方面,对申请访问临界资源的所有线程要公平对待,不能对部分线程优先考虑,使一些线程长时间独占资源,而使其它的线程进行长时间的等待,得不到资源;另一方面,在考虑了公平性的同时,也不能忽视了安全性的考虑,出现某一个线程访问临界资源,致使程序不能正常运行,产生严重的后果。在Java中对多线程的并发控

6、制应该做到公平性和安全性的理想兼容,两方面都不可忽视。并发系统的公平性使得资源在多线程之间得到相当科学和合理的分配,安全性保证了各线程的正常调度运行,从而使程序顺利地执行结束,完成任务。3 Java中多线程并发系统的安全性与公平性的具:具体实现,对于多线程并发系统中的安全性,应该做好对临界资源的管理,以及对其访问情况的监督,充分保证在临界资源空闲时才能被线程申请使用,即使牺牲点系统运行时间,也要保正程序的正常执行。下面以一个多线程并发访问临界资源的例子来具体说明并发系统中的公平性和安全性问题。31 问题描述如图1所示,在单行隧道中,每次只能容纳一列火车行驶,本程序就是控制使两边的火车都能安全地

7、通过隧道。如果火车来自同一个方向,它们可以并行地安全通过隧道,但是如果是两辆来自不同方向的火车,在隧道中相遇,就会发生冲突。32 功能实现:本程序简单模拟了上述问题,假设左边是LeftTrain,右边是RightTrmn,实现了火车为一、二、三列,以及分别考虑安全性和公平性的各种情况的实况模拟,说明并发系统中的公平性与安全性的重要性。33 程序中安全性与公平性的实现:331 流程分析1)假设两边各有三列Train,对每列Train建立一个线程(LeftTrain或RightTrain),线程的执行任务就是判断隧道的状态来完成Train的进出隧道,保证互斥访问隧道,使多个线程正常运行。2)对于T

8、rain过隧道的控制有三种情况: 只控制LeftTrain和RightTrain线程类的运行,不监控隧道的状态,由Tunnel类实现。 只保证Train互斥地通过单行隧道(安全性),由SafeTunnel类实现,它继承了Tunnel类。 既保证Train互斥通过隧道(安全性),又一定程度上保证了公平性,由FairTunnel类实现,它也继承了Tunnel类。3)对于界面的控制和各个线程类的建立初始化由类SingleLaneTtmnel实现。4)图形界面的动画处理由TtmnelCanvas类实现。332 关于SafeTunne1java的控制分析(1)多线程的并发运行。在LeftTrainjav

9、a和RightTrainjava中主要实现了多线程的并发运行(如图2所示)。 The single file tunnel mutual exclusion of Fig. 2 is controlled and pursued LEFtTrain and RightTrain two kinds of thread compete for the resource (single file tunnel Line),at thread kinds of operation function run () in,while(true)a)一一一while(!displaymoveLeft(id

10、);not on Tunnelb)一一一contro1LeftEnter();c)一一一while(displaymoveLeft(id);move over runneld)contro1LeftExit();a)决定了LeftTrain和RightTrain谁先申请到资源,谁先到达各自的申请资源线(A),谁就先申请到并占资源。b)使用资源并实现互斥功能:该函数通过一个整型变量来控制该类线程个数实现.c)判断占用资源的线程是否应该释放资源:当该线程到达自己的释放资源线(B)时就应改释放调该资源。d)执行释放资源的功能,并唤醒其它所有的线程。(2)安全性保证。在SafeTunne1java中主

11、要实现了资源的互斥访问功能(安全性)。在该资源中设有全局变量nLeft和nRight分别代表各类线程占用资源的个数。程序实现如下所示。synchronized void LeftEnter() throws interruptedExceptiona)一一一while(nRightO)wait();nLeft+ ;synchronized void LeftExit()p_Left-;b)一一一if(nLeft=O)notifyALL();a)判断另一类线程是否占用资源:如果nRight等于0说明没有占用该资源,如果nRight大于0,说明另一类线程正在占用该资源,这样就挂起本线程。b)释放资

12、源并唤醒线程:如果nLeft(nRight)等于零,就说明该类线程已经全释放了资源,重新唤醒所有线程继续竞争资源,这样就保证了多线程的延续性。(3)synchronized的作用。Java提供了专门机制以解决这种冲突,即synchronized关键字,它有效避免了同一个数据对象被多个线程同时访问。synchronized 方法使每个类实例对应一把锁,每个synchronized方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞本程序就是使用第一种方法来实现对公共资源的互斥访问。333 关于FairTunne1java的控制分析:FairTunnel类是对SafeTunnel类的改进

13、,在实现多线程并发执行中的安全性的同时,也保证了多个线程对资源访问的公平性。private hat nLeft: 0,nRight= 0,wai ht= 0,waitLeft= 0;private boolean Rightturn = true;synchronized void LeftEnter() throws InterruptedException+waitLeft;a) 一一一while(nPdght0 I I(waitiight0 Rght-turn)wait();-waitLeft;+ nLeft;synchronized void LeftExit()-rll t;b)一一

14、一Righrtum = true;c)一一一if(nLeft =O)notifyALL();在这个类中引用了以下几个公共变量:*nLeft,nRight:代表占用资源的同类线程数;*waitLeft,waitRight:代表申请资源的同类线程数;*Rightturn:是一个时间片开关,它实现了两边的两类线程公平地访问资源,两类线程申请资源获得允许使用权力的时间片就是一列Train通过单行隧道的时间。a)挂起线程:当n_Right大于0时说明RightTrain线程正在占用资源,当waitRight大于0时,说明有新的RightTrain线程将准备使用资源,Rightturn等于true时,说明

15、RightTrain线程有权继续使用资源。在上述情况下,挂起LeftTrain线程。b)当第一个使用资源的LeftTrain线程到达资源释放处时,使得Rightturn改为true,使得LeftTrain线程失去申请资源获得允许使用权力。b) 释放资源并唤醒线程:如果nLeft(nRight)等于零,就说明该类线程已经全释放了资源,重新唤醒所有线程继续竞争资源,这样就保证了多线程的延续性。c)4 结束语:文中简单模拟火车行驶单行隧道,通过这个实验模拟了多线程并发系统中的安全性与公平性问题,分别演示了在不同情况下产生何种后果:只考虑安全性,将会有一类Train(LeftTrain或者RightT

16、rain)长时间等待,申请不到资源;只考虑公平性,会出现两边火车相撞的情况。由此,可充分认识打到并发系统中的安全性与公平性二者的辨证关系,通过两者的结合,设计解决实际问题的最优方案。参考文献:1 J Magee J,Kramer JConcurrency:State Models Java ProgramsMs1_:Willey publishing oompany,19992 Eisen M B,SpeIlmaJ1 P T,Brown P O,et a1Cluster analysisand display of genome-wide expression patternsAProcNat

17、1AcadSci USA,95CUSA:Sn,199814863148683 Duda R O,Hart P EPattern Classificatin and Scene AnalysiMSI_:JohnWileyandSorts,19734 Xu Ying,Olman V,Xu DongClustering gene exprexsion datausing a graph-theoretic approach:an application of nfinimumspanning treesJBioinformatics,2002,l8:5365455 Kirkpatrick S,Gelatt C D,Vecchi M POptimization by simulated annengJ JScience,1983,220:6716804 / 4

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!