基于JAC技术实现读者/写者问题的研究

来源 :商场现代化 | 被引量 : 0次 | 上传用户:kxsaqq
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 简要描述JAC技术,阐述操作系统中读者/写者这个经典同步问题,并给出基于JAC实现此问题避免饿死现象的相应代码,以此论述JAC的使用及其线程同步能力。
  [关键词] JAC 读者/写者问题 同步
  
  一、JAC简介
  由Max Haustein等人开发的JAC是基于对顺序Java代码扩展注释来描述并发机制的,有着高水平的并发特征。它完全抛弃了Java原有的并发编程方式,隐藏了线程, 最小化了并发码和顺序码之间的分歧,加强了代码复用,融合了继承,并减轻了继承异常。用JAC 编写的Java程序只是纯粹的顺序化代码,通过在顺序代码中增加并发注解来实现并发,JAC 预编译器将识别它,并把它编译成Java编译器能识别的普通的Java并发同步代码。JAC中能被注解的语言成分有:语句、方法、类。与Java不同,JAC中的所有方法默认为必须互斥地执行,除非其前面有可并发执行的注解。
  二、读者/写者问题描述
  所谓“读者/写者问题”是指保证一个写线程必须与其他线程互斥地访问共享数据的同步问题。读者/写者问题问题所满足的条件是:读/读允许、读/写和写/写互斥,否则,将引起访问冲突,破坏数据的完整性。考虑到读者和写者争夺访问共享数据时可以具有不同的优先权,该问题可拓展出三种算法:(1)读者优先;(2)写者优先;(3)公平竞争。
  三、基于JAC的实现
  设计两个类: ShoredData类,将控制”读”与”写”分开,在读或写之前,必须先循环判断其Guard表达式,为真则开始读或写,读、写完毕进行修改相应值。ReadersWriter类,可读可写且用于操作测试,该类对象会对”读/写”、 ”写/写”进行互斥控制,而”读/读”不会发生冲突,不进行共享互斥。
  1.ShoredData类
  public class ShoredData{
  ……
  public ShoredData(int size)
  { this.buf=new char[size];
  for(int i=0;i  /**
  * @compatible readstart()
  *@when writing<=0&&(!Priority||waiting<=0)
  */
  public char[] readstart(){
  reading++;
  char[] newbuf=new char[buf.length];
  for(int i=0;i  {newbuf[i]=buf[i];
  System.out.println(“reading:”+ newbuf[i]);
  }
  /** @sleep Math.random()*1000 */
  return newbuf;}
  publicvoid readend()
  { reading--; priority=true;}
  /**
  * @if c!=null waiting++
  * @when reading<=0 && writing<=0
  */
  public void writestart(char c)
  {--waiting; writing++;
  for(int i=0;i  { buf[i]=c;
  System.out.println(“writing:”+ buf[i]);
  /** @sleep Math.random()*1000 */
  } }
  public void writeend()
  { --writing;priority=false;} }
  2.ReadersWriter类
  public class ReadersWriter{
   ShoredData SD;
   public ReadersWriter()
  {/** @controlled */
  SD=new ShoredData(10); }
   public static void main(String[] args)
   { /** @controlled */
  ReadersWriter RW=new ReadersWriter();
  /** @sleep 10000 */
  System.out.println(“演示完毕!”);
  /** @stop RW */
  RW=null;}
  //n个reader线程,它们之间可并发执行
  /**
  * @auto delay Math.random()*1000 thread n
  * @compatible
  */
  public void read()
  { System.out.println(“Reading:”);
  SD.readstart();SD.readend();}
  //m个writer线程,可并发执行,但由于受条件控制,写/写之间只能互斥
  /**
  * @auto delay Math.random()*1000 thread m
  * @compatible
  */
  public void write()
  { System.out.println(“Writing:”);
  SD.writestart(c);SD.writeend();} }
  四、结语
  JAC技术是一种java拓展的并行表达层次更高的并发模型,它只是在顺序代码中增加一些并发注解,使得代码进一步重用。读者/写者问题是操作系统中一个常见且复杂的同步问题,用JAC 解决该问题简洁、清晰、程序可读性强。与其他同步机制相比,JAC在算法设计上的自然形式也更加符合设计人员的思维习惯,并且程序健壮性也大大增强了。
  参考文献:
  李金忠夏洁武:基于JAVA多线程机制实现读者/写者问题的拓展研究[J]. 井冈山学院学报, 2008, 29(2)
其他文献
在当代旅游经济发展带动产业结构调整的背景下,全国各地涌现出大量新颖的旅游产品和因旅游发展而受益的地方,其中比较有代表性的旅游产品有:古镇游、农业观光游、景区周边游、民族文化游等。贵州省安顺市西秀区龙宫镇利用得天独厚的优势,依托龙宫国家级风景名胜区、5A级旅游区的品牌优势和游客客源大力发展特色乡村旅游产业,走出一条极具地方特色,依托旅游发展农村、致富农民的良性发展之路。  一、基本情况  国家级风景
期刊
[摘 要] 本文在借鉴前人研究的基础上,尝试以中国上市公司中有代表性的制造业和商品流通业这两大行业为样本,建立用于实证研究的统计模型。利用SPSS15.0统计软件,运用所建立的模型通过多元回归分析的方法对样本数据进行统计分析。根据实证的结果,分析处于不同行业公司的负债总体水平对其公司业绩的影响是否有实质性的不同。  [关键词] 上市公司 债务融资 公司业绩    一、实证研究的设计  本文对最近5
期刊
[摘 要] 本文在对中国外向FDI的发展现状进行分析的基础上,指出中国外向FDI发展中存在着投资规模、投资结构、经营管理、制度法规和人才等方面的问题,并从投资主体、产业选择、区位选择、投资方式等方面综合考虑提出了中国外向FDI的发展策略。  [关键词] 对外直接投资 现状 策略    在世界经济全球化、区域经济一体化的大背景下,发展对外直接投资(以下简称外向FDI)是我国经济强盛的必由之路,也是企
期刊
[摘 要] 在肯德基或者麦当劳等快餐店里,排队现象很普遍。从经济学角度,顾客需要进行“成本—效益分析”,来选择最优的队伍,使自己的从中获得的预期效益(如成功地购买到食物)超过因此产生的成本(如等待时间和购买的花费)。但是,顾客认为最优的选择是在不完全信息的基础上决策的,选择的结果不一定是最优的。笔者从经济学角度,来解释消费者各种理性行为和快餐店里出现的各种现象。  [关键词] 理性行为 成本—效益
期刊
[摘 要] WEP协议是IEEE802.11标准规定的数据加密机制,虽然WEP提供了64位和128位长度的密钥机制,但仍然存在许多缺陷,因此,IEEE802.11需要采用其他的加密体制。本文分析了基于IEEE802.11标准的WEP安全漏洞,介绍了AES-CMM和ECC两种加密体制,对IEEE802.11数据帧加密,并对它们的性能进行分析。  [关键词] 有线对等协议 AES-CCM 椭圆曲线密码
期刊
[摘 要] 2010年上海世博会对于我国的体育用品业的国际化之路是一次不可多得的机会。我国目前在生产、营销、品牌等国际化方面还有所欠缺,必须采取有力措施提高我国体育用品业的国际竞争力,推动其国际化发展。  [关键词] 2010年世博会 体育用品 国际化    一、上海世博会对体育用品业国际化发展的意义  一个半世纪前问世于欧洲的世界博览会,已被视为是展示经济和社会成就、展示综合国力的舞台,它是一项
期刊
[摘 要] 2007年开始实施的新会计准则在金融工具、投资性房地产等准则中引入公允价值计量模式,选择不同的会计科目和后续处理方法,会对当期利润产生不同的影响。本文以2007年1月1日短期证券投资重分类为例,在研究了新会计准则实施一年多以来我国上市公司准则利用的实际情况后,对公允价值会计政策选择的盈余管理动因进行理论分析。  [关键词] 会计政策选择 公允价值会计 盈余管理 短期证券投资    一、
期刊
[摘 要] 由于商标翻译的特殊功能和目的,创造性叛逆是非常突出和普遍的现象,以创补失已经成了现代商标翻译中的流行趋势,然而“创”并不意味绝对叛逆、随意发挥,而是叛逆中含忠实、以叛逆求忠实,动态统一、共同服务于翻译目的——突出商标的社会功能和宣传功效,以激发译语接受者的消费欲望。  [关键词] 商标翻译 以创补失 叛逆 忠实    一、引言  由于翻译的跨语言跨文化的性质,译作对原作绝对忠实或完全复
期刊
[摘 要] 文章对电子商务专业课程建设中存在的问题进行分析和研究,并以北京联合大学商务学院为例针对“电子商务专业”课程建设中存在的问题寻求解决的方法。  [关键词] 课程建设 电子商务 人才培养目标    一、引言  目前教育研究者对课程建设展开了广泛的研究,原因之一是课程建设对学校办学和专业建设具有很重要的影响作用,而如何将课程建设与学校办学目标紧密结合,如何通过课程建设来创办成功的有特色的专业
期刊
[摘 要] 互联网的作为一项全新的技术手段,带来以往不曾想象的交往方式和构筑起新的交往空间,对公共领域带来前所未有的影响。公共领域能够提供一个平等自由交往的环境,最终将造就一个“协商”的社会,在协商中实现法治。互联网对公共领域各方面产生了不可忽视的影响,公共领域在互联网这一新兴的交往条件下增添了许多新的特性,从而对法治建设也发挥了许多新的影响。  [关键词] 法治 互联网 公共领域    公共领域
期刊