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)

主站蜘蛛池模板: 欧美 亚洲 日韩 国产| 丁香六月激情婷婷| 4虎影视国产在线观看精品| 亚洲最猛黑人xxxx黑人猛交| 欧美天堂在线| 午夜啪啪网| 国产成人av一区二区三区| 亚洲毛片一级带毛片基地| 亚洲天堂网视频| 久久精品亚洲专区| 久久精品一品道久久精品| 九九九九热精品视频| 亚洲国产天堂久久九九九| 中文字幕1区2区| 国内精品一区二区在线观看| 韩日午夜在线资源一区二区| 91丝袜在线观看| 伊人91视频| 国产SUV精品一区二区6| 国产福利大秀91| 国产亚洲视频播放9000| 国产一区在线视频观看| 在线精品欧美日韩| 潮喷在线无码白浆| 亚洲日韩国产精品无码专区| 国产精品亚洲片在线va| 免费国产好深啊好涨好硬视频| 四虎影视库国产精品一区| 国内精品小视频在线| 欧美日韩一区二区在线免费观看 | 欧美精品亚洲日韩a| 天堂av高清一区二区三区| h视频在线观看网站| 免费高清自慰一区二区三区| 亚洲激情区| 国产69囗曝护士吞精在线视频| 国产传媒一区二区三区四区五区| 国产原创自拍不卡第一页| 福利小视频在线播放| 亚洲中文字幕日产无码2021| 亚洲人在线| 丰满少妇αⅴ无码区| 亚洲精品中文字幕无乱码| 亚洲一级毛片免费观看| 国产亚洲美日韩AV中文字幕无码成人 | 一本久道热中字伊人| 91系列在线观看| 被公侵犯人妻少妇一区二区三区| 国产精品自在在线午夜区app| 被公侵犯人妻少妇一区二区三区| 亚洲欧洲天堂色AV| 久草视频中文| 毛片基地视频| 真人免费一级毛片一区二区| 99视频有精品视频免费观看| 国产91高跟丝袜| 99中文字幕亚洲一区二区| 国产欧美视频一区二区三区| www.91在线播放| 亚洲黄色高清| 热九九精品| 欧美成人怡春院在线激情| 国产真实乱子伦视频播放| 蜜臀AVWWW国产天堂| 亚洲一区二区在线无码| 欧美三级自拍| 欧美性精品| 成人精品区| 国产菊爆视频在线观看| 精品国产美女福到在线不卡f| 国产成在线观看免费视频| 国产AV毛片| 天堂亚洲网| 亚洲69视频| 国产精品美人久久久久久AV| 亚洲精品无码成人片在线观看| 天天摸夜夜操| 国产精品第页| 美女内射视频WWW网站午夜| 黄色网址免费在线| 欧洲亚洲欧美国产日本高清| 被公侵犯人妻少妇一区二区三区|