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

基于JAC技術實現讀者/寫者問題的研究

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

[摘要] 簡要描述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!=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線程,它們之間可并發執行

/**

* @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)

主站蜘蛛池模板: 狠狠色成人综合首页| 999精品视频在线| 欧美三级视频在线播放| 99re这里只有国产中文精品国产精品| 亚洲美女高潮久久久久久久| 老色鬼欧美精品| 亚洲最大在线观看| 看国产毛片| 亚洲天堂啪啪| 91国内外精品自在线播放| 热思思久久免费视频| 免费国产福利| 中文字幕av无码不卡免费 | jizz在线免费播放| 伊人国产无码高清视频| 欧美午夜一区| 免费观看成人久久网免费观看| 亚洲国产91人成在线| 久草视频精品| 五月婷婷导航| 污网站免费在线观看| 国精品91人妻无码一区二区三区| 青青热久麻豆精品视频在线观看| 91年精品国产福利线观看久久 | 亚洲黄色激情网站| 天天色综网| 天堂av综合网| 99福利视频导航| 天堂成人av| 久久精品aⅴ无码中文字幕| 国产91小视频在线观看| 国产丝袜无码一区二区视频| 国产精品亚洲片在线va| 国产对白刺激真实精品91| 尤物精品国产福利网站| 欧美无专区| 久久亚洲高清国产| 亚洲免费三区| 亚洲国产精品国自产拍A| 久久精品一品道久久精品| 日韩无码黄色网站| 五月丁香伊人啪啪手机免费观看| 色哟哟国产精品| 亚洲天堂精品在线观看| 中文字幕亚洲另类天堂| 国产精品自拍合集| 精品福利国产| 2021国产乱人伦在线播放| 国产成人综合亚洲网址| 欧美激情伊人| 特级毛片免费视频| 免费看av在线网站网址| 国产精品国产主播在线观看| 在线观看国产精美视频| 片在线无码观看| 亚洲国产中文在线二区三区免| 毛片一区二区在线看| 91小视频版在线观看www| 日韩在线2020专区| 日韩二区三区| 国内a级毛片| 久久免费视频6| 亚洲一区免费看| 一区二区影院| 熟妇丰满人妻| 国产女人18水真多毛片18精品| 欧美午夜精品| 手机精品福利在线观看| 亚洲视频免| 亚洲成aⅴ人在线观看| 先锋资源久久| 超碰精品无码一区二区| 国产精品免费p区| 欧美特黄一免在线观看| 国产乱人伦精品一区二区| 成人免费一级片| 人妻夜夜爽天天爽| 久久综合九九亚洲一区| 久久精品中文字幕少妇| 欧美成人精品一级在线观看| 国产一区免费在线观看| 国产欧美日韩视频怡春院|