999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JAC技術(shù)實現(xiàn)讀者/寫者問題的研究

2008-12-31 00:00:00李金忠李滿華夏潔武
商場現(xiàn)代化 2008年33期

[摘要] 簡要描述JAC技術(shù),闡述操作系統(tǒng)中讀者/寫者這個經(jīng)典同步問題,并給出基于JAC實現(xiàn)此問題避免餓死現(xiàn)象的相應(yīng)代碼,以此論述JAC的使用及其線程同步能力。

[關(guān)鍵詞] JAC 讀者/寫者問題 同步

一、JAC簡介

由Max Haustein等人開發(fā)的JAC是基于對順序Java代碼擴(kuò)展注釋來描述并發(fā)機制的,有著高水平的并發(fā)特征。它完全拋棄了Java原有的并發(fā)編程方式,隱藏了線程, 最小化了并發(fā)碼和順序碼之間的分歧,加強了代碼復(fù)用,融合了繼承,并減輕了繼承異常。用JAC 編寫的Java程序只是純粹的順序化代碼,通過在順序代碼中增加并發(fā)注解來實現(xiàn)并發(fā),JAC 預(yù)編譯器將識別它,并把它編譯成Java編譯器能識別的普通的Java并發(fā)同步代碼。JAC中能被注解的語言成分有:語句、方法、類。與Java不同,JAC中的所有方法默認(rèn)為必須互斥地執(zhí)行,除非其前面有可并發(fā)執(zhí)行的注解。

二、讀者/寫者問題描述

所謂“讀者/寫者問題”是指保證一個寫線程必須與其他線程互斥地訪問共享數(shù)據(jù)的同步問題。讀者/寫者問題問題所滿足的條件是:讀/讀允許、讀/寫和寫/寫互斥,否則,將引起訪問沖突,破壞數(shù)據(jù)的完整性。考慮到讀者和寫者爭奪訪問共享數(shù)據(jù)時可以具有不同的優(yōu)先權(quán),該問題可拓展出三種算法:(1)讀者優(yōu)先;(2)寫者優(yōu)先;(3)公平競爭。

三、基于JAC的實現(xiàn)

設(shè)計兩個類: ShoredData類,將控制”讀”與”寫”分開,在讀或?qū)懼埃仨毾妊h(huán)判斷其Guard表達(dá)式,為真則開始讀或?qū)懀x、寫完畢進(jìn)行修改相應(yīng)值。ReadersWriter類,可讀可寫且用于操作測試,該類對象會對”讀/寫”、 ”寫/寫”進(jìn)行互斥控制,而”讀/讀”不會發(fā)生沖突,不進(jìn)行共享互斥。

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!=1 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=1;} }

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=1;}

//n個reader線程,它們之間可并發(fā)執(zhí)行

/**

* @auto delay Math.random()*1000 thread n

* @compatible

*/

public void read()

{ System.out.println(“Reading:”);

SD.readstart();SD.readend();}

//m個writer線程,可并發(fā)執(zhí)行,但由于受條件控制,寫/寫之間只能互斥

/**

* @auto delay Math.random()*1000 thread m

* @compatible

*/

public void write()

{ System.out.println(“Writing:”);

SD.writestart(c);SD.writeend();} }

四、結(jié)語

JAC技術(shù)是一種java拓展的并行表達(dá)層次更高的并發(fā)模型,它只是在順序代碼中增加一些并發(fā)注解,使得代碼進(jìn)一步重用。讀者/寫者問題是操作系統(tǒng)中一個常見且復(fù)雜的同步問題,用JAC 解決該問題簡潔、清晰、程序可讀性強。與其他同步機制相比,JAC在算法設(shè)計上的自然形式也更加符合設(shè)計人員的思維習(xí)慣,并且程序健壯性也大大增強了。

參考文獻(xiàn):

李金忠夏潔武:基于JAVA多線程機制實現(xiàn)讀者/寫者問題的拓展研究[J]. 井岡山學(xué)院學(xué)報, 2008, 29(2)

主站蜘蛛池模板: 日韩一级二级三级| 国产精品综合色区在线观看| 一级成人a毛片免费播放| 国产视频自拍一区| 亚洲黄色高清| 日本三级黄在线观看| 欧洲在线免费视频| 人人澡人人爽欧美一区| 一区二区午夜| a毛片免费看| 永久免费精品视频| 日韩视频免费| 青青青视频91在线 | 国产精品嫩草影院av| 天堂亚洲网| 国产综合欧美| 国产成人高清精品免费软件| 波多野吉衣一区二区三区av| 狠狠色成人综合首页| 99久久99这里只有免费的精品| 国内精品自在自线视频香蕉| 国产精品免费电影| 国产精品第一区在线观看| 国产又粗又猛又爽| 美女国产在线| 国产成人精品视频一区视频二区| 一级毛片在线播放| 欧美精品在线看| 98超碰在线观看| 67194成是人免费无码| 亚洲午夜国产精品无卡| hezyo加勒比一区二区三区| 热99re99首页精品亚洲五月天| 亚洲国产精品不卡在线| 91精品福利自产拍在线观看| 亚洲欧洲免费视频| 欧美翘臀一区二区三区 | 亚洲无码高清一区| 精品久久久久成人码免费动漫 | 色婷婷在线影院| 天天干天天色综合网| 免费a在线观看播放| 1级黄色毛片| 国产精品视频第一专区| 欧美一级视频免费| 国产成人毛片| 一区二区三区国产精品视频| 人妻免费无码不卡视频| 五月天丁香婷婷综合久久| 国产一级二级在线观看| 欧洲av毛片| 老司机精品一区在线视频| 亚洲成a∧人片在线观看无码| 自慰网址在线观看| 亚洲伊人电影| 久久久久免费精品国产| 国产白浆在线| 国产成人精品优优av| 成人在线第一页| 性欧美在线| 无码av免费不卡在线观看| 真人高潮娇喘嗯啊在线观看| 无码区日韩专区免费系列| 久热这里只有精品6| 欧美成人手机在线视频| 国产毛片高清一级国语| 亚洲精品手机在线| 日韩a在线观看免费观看| 香蕉国产精品视频| 欧美天天干| 国产精品天干天干在线观看| 国产H片无码不卡在线视频| 亚洲男人天堂网址| 欧美日韩成人| 国产69精品久久久久孕妇大杂乱 | 国产成人精品一区二区秒拍1o| 免费Aⅴ片在线观看蜜芽Tⅴ| 在线视频精品一区| 国产真实乱子伦精品视手机观看| 最新国产在线| 日韩成人在线一区二区| 中文字幕伦视频|