网站大量收购独家精品文档,联系QQ:2885784924

多线程机制解决哲学家进餐问题的解决策略.PDF

多线程机制解决哲学家进餐问题的解决策略.PDF

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多线程机制解决哲学家进餐问题的解决策略.PDF

。t’1h,‘‘‘ _-”4’a_^。t‘。‘‘‘”d*,’1‘1d1。n‘『。’‘’‘H。^__11‘_1 实用第一j,智慧密集 ,…7.……j。i .一一i.。?7..??,.。.。.,……,。,。÷…,ii 多线程机制解决哲学家进餐问题的解决策略 李金忠 摘 要 简要描述Java语言多线程机制,阐述了操作系统中哲学家进餐这个经典同步问 题,探讨了该问题的多种解决策略,并通过Java语言的多线程编程技术,给出 了实现此问题的相应解决策略的代码,有效地避免了饥饿和死锁现象的产生。 关键词 多线程,同步,死锁,饥饿 餐。哲学家们共用一张圆桌,分别坐在周围的五把椅子上,在 一、引言 圆桌上有五个碗和五支筷子,每两个哲学家之间放一支(设哲 在现代操作系统中,利用进(线)程间的并发性实现程序中 学家和筷子的编号都分别为。至4,0号哲学家左右分别放置 并发成分的并行执行,可大大提高系统的处理能力和效率,但 也可能带来诸如死锁和饥饿等不良现象,因此并发系统中处理 子,具体如图1所示)。哲学家思考问题时并不影响其他人, 好进(线)程间的互斥与同步就显得至关重要。Java语言中的多 饥饿时便试图拿起他左边和右边的筷子准备进餐,只有在他拿 线程机制是解决线程间互斥与同步问题的重要工具,其应用 到其左右两支筷子后方可进餐,进餐毕,放下两支筷子又继续 (如工业自动化控制、图形处理等)很广泛,很复杂且常易出 思考。 错。因此在应用程序设计过程中,要考虑多个线程如何同步使 用进程的共享资源,如何让一个线程与另一个线程协调合作, 以免产生线程问的访问冲突。正确运用Java语言提供的多线程 机制能有效避免同一共享互斥资源被多个线程同时访问,维护 数据的一致性、安全性,彻底解决并发程序中的死锁和饥饿现 象。本文基于Java语言中的多线程机制,实现操作系统中哲学 家进餐问题,以帮助人们更好地理解同步概念及其实现方法。 家 二、多线程机制简述 多线程是允许在程序中并发执行多个指令流(线程),彼此 图l 哲学家进餐问题描述图 间互相独立的一种并发机制,其核心在于多个代码块并发执 从描述中可知,筷子是共享但又必须互斥使用的临界资 行,本质特点在于各代码块之间的代码是乱序执行的,这多个 源,在一段时间内只允许一个哲学家使用。由于筷子当前是否 线程在并发运行过程中可能同时访问共享互斥资源。程序中包 被占用,其他哲学家的状态都是需要哲学家之间进行交互的, 含要执行的多个线程,每个线程均具有部分程序功能且能与其 所以就涉及到同步、互斥问题。现考虑下面两种情况: 他线程并发执行,它们共同存在于进程的虚拟地址空间中,共 假设一:当所有的哲学家都同时拿起左边筷子时,则所有 享同一进程的数据资源。在Java程序设计中实现多线程有两条 的哲学家都将拿不到右边的筷子并处于等待状态,那么哲学家 途径:继承Thread类,覆盖run()方法;实现runnable()接 都无法进餐,从而进入“死锁”

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档