- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【java编程课件】线程报告
10.5 线程同步 在前面我们研究了共享资源的访问问题。在实际应用中,多个线程之间不仅需要互斥机制来保证对共享数据的完整性,而且有时需要多个线程之间互相协作,按照某种既定的步骤来共同完成任务。一个典型的应用是称之为生产-消费者模型。该模型可抽象为如图10-9。其约束条件为: 1)??????? 生产者负责产品,并将其保存到仓库中; 2)??????? 消费者从仓库中取得产品。 3)??????? 由于库房容量有限,因此只有当库房还有空间时,生产者才可以将产品加入库房;否则只能等待。 只有库房中存在满足数量的产品时,消费者才能取走产品,否则只能等待。 10.5 线程同步 实际应用中的许多例子都可以归结为该模型。如在操作系统中的打印机调度问题,库房的管理问题等。为了研究该问题,我们仍然以前面的存款与取款问题作为例子,假设存在一个账户对象(仓库)及两个线程:存款线程(生产者)和取款线程(消费者),并对其进行如下的限制; 1 只有当账户上的余额balance=0时,存款线程才可以存进100元;否则只能等待; 2 只有当账户上的余额balance=100时,取款线程才可以取走100元;否则只能等待。 10.5 线程同步 wait()方法的语义是:当一个线程执行了该方法,则该线程进入阻塞状态,同时让出同步对象的互斥锁,并自动进入互斥对象的等待队列。 notify()方法的语义是: 当一个线程执行了该方法,则拥有该方法的互斥对象的等待队列中的第一个线程被唤醒,同时自动获得该互斥对象的互斥锁,并进入就绪状态等待调度。 利用这两个方法,我们对上面的程序修改如下: 10.6 线程通讯 线程之间的通讯问题是指线程之间相互传递信息,这些信息包括数据、控制指令等。我们前面举例中数据共享也是线程的一种通信方式。此外,java语言还提供了线程之间通过管道来进行通信的方式。其结构表示。管道通信具有如下特点: l???????? 管道是单向的。一个线程充当发送者,另一个线程充当接收者。如果需要建立双向通信,可以通过建立多个管道解决。 l???????? 管道通信是面向连接的。因此在程序设计中,一方线程必须建立起对应的端点,由另一方线程来建立连接。 l???????? 管道中的信息是严格按照发送的顺序进行传送的。因此接收受方收到的数据和发送方在顺序上完全一致。 10.7 线程死锁 线程死锁是并发程序设计中可能遇到的问题之一。它是指程序运行中,多个线程竞争共 享资源时可能出现的一种系统状态:线程1拥有资源1,并等待资源2,而线程2拥有资源2,并等待资源3,…,以此类推,线程n拥有资源n-1,并等待资源1。在这种状态下,各个线程互不相让,永远进入一种等待状态。 10.7 线程死锁 我们可以想象,如果每个哲学家都彬彬有礼,并且高谈阔论,轮流吃饭,则这种融洽的气氛可以长久地保持下去。但是可能出现这样一种情景:当每个人都拿起自己左手边的筷子,并同时去拿自己右手边的筷子时,会发生什么情况:五个人每人拿着一支筷子,盯着自己右手边的那位哲学手里的一支筷子,处于僵持状态。这就是发生了“线程死锁”。需要指出的事,线程死锁并不是必然会发生,在某些情况下,可能会非常偶然。例程10-19模拟了哲学家用餐问题。运行该程序也可以看出,并不是每次都会发生死锁。因此线程死锁只是系统的一种状态,该状态出现的机会可能会非常小,因此简单的测试往往无法发现。遗憾的是Java语言也没有有效的方法可以避免或检测死锁,因此我们只能在程序设计中尽力去减少这种情况的出现。 10.7 线程死锁 一般来说,要出现死锁必须同时具备四个条件。因此,如果能够尽可能地破坏这四个条件中的任意一个,就可以避免死锁的出现。 1.??????互斥条件。即至少存在一个资源,不能被多个线程同时共享。如在哲学家问题中,一支筷子一次只能被一个哲学家使用。 2.?????? 至少存在一个线程,它拥有一个资源,并等待获得另一个线程当前所拥有的资源。如在哲学家聚餐问题中,当发生死锁时,至少有一个哲学家拿着一支筷子,并等待取得另一个哲学家拿着的筷子。 3.???????线程拥有的资源不能被强行剥夺,只能有线程资源释放。如在哲学家问题中,如果允许一个哲学家之间可以抢夺筷子,则就不会发生死锁问题。 10.7 线程死锁 线程对资源的请求形成一个圆环。即:线程1拥有资源1,并等待资源2,而线程2拥有资源2,并等待资源3,…,以此类推,最后线程n拥有资源n-1,并等待资源1,从而构成了一个环。这是构成死锁的一个重要条件。如在哲学家问题中,如果规定每个哲学家必须在拿到自己左边的筷子后,才能去拿自己右边的筷子,那么讲很容易形成一个请求环,因此也就可能形成死锁。但如果我们规定其中的某一个哲学家只能在拿到自己右边筷子的前提下,才能去拿左边的筷
您可能关注的文档
- 《面向对象程序设计》实验指导书报告.doc
- 《静脉治疗护理技术操作规范》(6章)报告.ppt
- 《食品安全法》罚则报告.ppt
- 《饭店服务与管理》会考模拟试题(二)及答案报告.doc
- 《食品安全与日常饮食》期末考试1.报告.doc
- 《饭店计算机信息管理》-第3章__饭店信息管理技术基础报告.ppt
- 《风》课件报告.ppt
- 《风向和风速》课件报告.ppt
- 《项脊轩志》报告.ppt
- 《马关条约》报告.ppt
- 【Rsoft】Rsoft中文教程软件报告.doc
- 【pascal教程】第6章函数报告.ppt
- 【RationalRose2003基础教程】第10章ANSICPP的Rose双向工程报告.ppt
- 【SIDH】九年级科学上册(浙教版)习题课件:3.5.2比热容和热量的计算(共11张)报告.ppt
- 【600考点700分考法】(2017A版)高考物理一轮复习第二章相互作用课件报告.ppt
- 【SPSS19教程】第12章SPSS在市场调研中的应用报告.ppt
- 【SPSS19教程】第3章SPSS描述性统计分析报告.ppt
- 【】高考作文记叙文写作的结构模式课件[83张]报告.ppt
- 【WSC6100-X256盒式AC硬件安装手册】【版本S.0.3】【2015-03-27】报告.doc
- 【SQDH】2015-2016学年(人教版)八年级语文下册:15喂——出来报告.ppt
文档评论(0)