亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? yinhang.java

?? 用java做的銀行家算法
?? JAVA
字號:
import java.util.*; 

class ThreadTest { 
static int type = 4, num = 10; //定義資源數目和線程數目 
static int[] resource = new int[type]; //系統資源總數 
//static int[] copyResource = new int[type]; //副本 
static Random rand = new Random(); 
static Bank[] bank = new Bank[num]; //線程組 
Bank temp = new Bank(); 

public void init() { 
//初始化組中每個線程,隨機填充系統資源總數 
for(int i = 0; i < type; i++) 
resource[i] = rand.nextInt(10) + 80; 
System.out.print("Resource:"); 
for(int i = 0; i < type; i++) 
System.out.print(" " + resource[i]); 
System.out.println(""); 
for(int i = 0; i < bank.length; i++) 
bank[i] = new Bank("#" + i); 
} 
public ThreadTest4() { 
init(); 
} 

class Bank extends Thread { 
//銀行家算法避免死鎖 
public int[] 
max = new int[type], //總共需求量 
need = new int[type], //尚需資源量 
allocation = new int[type]; //已分配量 
private int[] 
request = new int[type], //申請資源量 
copyResource = new int[type]; //資源副本 
private boolean isFinish = false; //線程是否完成 
int[][] table = new int[bank.length][type*4]; //二維資源分配表 

private void init() { 
// 隨機填充總共、尚需、已分配量 
synchronized(resource) { 
for(int i = 0; i < type; i++) { 
max[i] = rand.nextInt(5) + 10; 
need[i] = rand.nextInt(10); 
allocation[i] = max[i] - need[i]; 
resource[i] -= allocation[i]; //從系統資源中減去已分配的 
} 
printer(); 
for(int i = 0; i < type; i++) { 
if(resource[i] < 0) { 
//若出現已分配量超出系統資源總數的錯誤則退出 
System.out.println("The summation of Threads' allocations is out of range!"); 
System.exit(1); 
} 
} 
} 
} 

public Bank(String s) { 
setName(s); 
init(); 
start(); 
} 
public Bank() { 
//none 
} 

public void run() { 
try { 
sleep(rand.nextInt(2000)); 
} 
catch(InterruptedException e) { 
throw new RuntimeException(e); 
} 
while(true) { 
//程序沒有完成時一直不斷申請資源 
if(askFor() == false) { 
try { 
sleep(1000); 
} 
catch(InterruptedException e) { 
throw new RuntimeException(e); 
} 
} 
else 
tryRequest(); 
if(noNeed() == true) 
break; 
} 
//休眠一段時間模擬程序運行 
try { 
sleep(1000); 
} 
catch(InterruptedException e) { 
throw new RuntimeException(e); 
} 
System.out.println(getName() + " finish!"); 
synchronized(resource) { 
//運行結束釋放占有資源 
for(int i = 0; i < type; i++) { 
resource[i] += allocation[i]; 
need[i] = allocation[i] = max[i] = 0; 
} 
} 
} 

private void printer() { 
//打印當前資源信息 
System.out.print(getName() + " Max:"); 
for(int i = 0; i < type; i++) 
System.out.print(" " + max[i]); 
System.out.print(" Allocation:"); 
for(int i = 0; i < type; i++) 
System.out.print(" " + allocation[i]); 
System.out.print(" Need:"); 
for(int i = 0; i < type; i++) 
System.out.print(" " + need[i]); 
System.out.print(" Available:"); 
for(int i = 0; i < type; i++) 
System.out.print(" " + resource[i]); 
System.out.println(""); 
} 
private boolean askFor() { 
//隨機產生申請資源量并檢測是否超標 
boolean canAsk = false; 
for(int i = 0; i < type; i++) { 
request[i] = rand.nextInt(20); 
//防止申請量超過所需量 
if(request[i] > need[i]) 
request[i] = need[i]; 
} 
for(int i = 0; i < type; i++) //防止隨機申請資源全為0 
if(request[i] > 0) 
canAsk = true; 
synchronized(resource) { 
//鎖住可供資源檢查是否超標 
for(int i = 0; i < type; i++) { 
if(request[i] > resource[i]) 
//如果申請資源超過可供資源則等待一段時間后重新申請 
return false; 
} 
} 
return canAsk; 
} 
private void tryRequest() { 
//創建副本嘗試分配請求 
synchronized(resource) { 
for(int i = 0; i < type; i++) 
//依然要防止請求量超出范圍 
if(request[i] > resource[i]) 
return; 
for(int i = 0; i < type; i++) { 
//復制資源量并減去需求量到一個副本上 
copyResource[i] = resource[i]; 
copyResource[i] -= request[i]; 
} 
System.out.print(getName() + " ask for:"); 
for(int i = 0; i < type; i++) 
System.out.print(" " + request[i]); 
System.out.println(""); 
if(checkSafe() == true) { 
//如果檢查安全則將副本值賦給資源量并修改占有量和需求量 
for(int i = 0; i < type; i++) { 
resource[i] = copyResource[i]; 
allocation[i] += request[i]; 
need[i] -= request[i]; 
} 
System.out.println(getName() + " request succeed!"); 
} 
else 
System.out.println(getName() + " request fail!"); 
} 
} 
private boolean checkSafe() { 
//銀行家算法檢查安全性 
synchronized(bank) { 
//將線程資源信息放入二維資源分配表檢查安全性,0~type可用資源/type~type*2所需資源/type*2~type*3占有資源/type*3~-1可用+占用資源 
for(int i = 0; i < bank.length; i++) { 
for(int j = type; j < type*2; j++) { 
table[i][j] = bank[i].need[j%type]; 
} 
for(int j = type*2; j < type*3; j++) { 
table[i][j] = bank[i].allocation[j%type]; 
} 
} 
//冒泡排序按需求資源從小到大排 
for(int i = 0; i < bank.length; i++) { 
for(int j = i; j < bank.length-1; j++) { 
sort(j, 4); 
} 
} 
//進行此時刻的安全性檢查 
for(int i = 0; i < type; i++) { 
table[0][i] = copyResource[i]; 
table[0][i+type*3] = table[0][i] + table[0][i+type*2]; 
if(table[0][i+type*3] < table[1][i+type]) 
return false; 
} 
for(int j = 1; j < bank.length-1; j++) { 
for(int k = 0; k < type; k++) { 
table[j][k] = table[j-1][k+type*3]; 
table[j][k+type*3] = table[j][k] + table[j][k+type*2]; 
if(table[j][k+type*3] < table[j+1][k+type]) 
return false; 
} 
} 
} 
return true; 
} 
private void sort(int j, int k) { 
//遞歸冒泡排序 
int tempNum; 
if(table[j][k] > table[j+1][k]) { 
for(int i = type; i < type*2; i++) { 
tempNum = table[j][i]; 
table[j][i] = table[j+1][i]; 
table[j+1][i] = tempNum; 
} 
/*temp = bank[j]; 
bank[j] = bank[j+1]; 
bank[j+1] = temp;*/ 
} 
else if(table[j][k] == table[j+1][k] && k < type*2) //此資源量相同時遞歸下一個資源量排序并且防止超出范圍 
sort(j, k+1); 
} 
private boolean noNeed() { 
//是否還需要資源 
boolean finish = true; 
for(int i = 0; i < type; i++) { 
if(need[i] != 0) { 
finish = false; 
break; 
} 
} 
return finish; 
} 
} 

public static void main(String[] args) { 
ThreadTest t = new ThreadTest(); 
//后臺線程,設定程序運行多長時間后自動結束 
new Timeout(30000, "---Stop!!!---"); 
} 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文欧美在线| 国产欧美日韩综合精品一区二区| 久久国产精品露脸对白| 亚洲一区免费观看| 国产一区二区91| 免费欧美日韩国产三级电影| 亚洲国产成人午夜在线一区| 亚洲一区二区三区影院| 中文av一区特黄| 欧美v亚洲v综合ⅴ国产v| 99re成人在线| 99视频热这里只有精品免费| 国产成人av网站| 日本视频中文字幕一区二区三区| 亚洲午夜在线电影| 欧美r级在线观看| 日韩一区二区中文字幕| 欧美老女人第四色| 精品伦理精品一区| 欧美日韩一区 二区 三区 久久精品| 欧美在线三级电影| 欧美在线观看18| 不卡一区在线观看| 91久久奴性调教| 亚洲综合丁香婷婷六月香| 亚洲日本韩国一区| 久久久亚洲欧洲日产国码αv| 精品精品国产高清a毛片牛牛| 久久久99久久| 日韩亚洲欧美高清| 国产精品无码永久免费888| 中文乱码免费一区二区| 亚洲视频在线一区观看| 亚洲女同ⅹxx女同tv| 久久久99久久| 亚洲电影在线免费观看| 午夜欧美大尺度福利影院在线看| 天天综合网天天综合色| 国产成人在线看| 91原创在线视频| 91精品在线一区二区| 精品sm捆绑视频| 国产精品黄色在线观看| 亚洲一级片在线观看| 看电视剧不卡顿的网站| 另类小说一区二区三区| 国产一区二区精品在线观看| 欧美性感一区二区三区| 欧美一区二区人人喊爽| 一区二区三区中文字幕电影| 成人免费视频免费观看| 欧美日韩中文一区| 精品国产一区二区三区忘忧草| 精品国产精品一区二区夜夜嗨| 一区二区三区四区不卡在线| 欧美日韩视频第一区| 精品免费日韩av| 国产日韩欧美一区二区三区综合| 亚洲国产中文字幕在线视频综合| 色婷婷香蕉在线一区二区| 日韩一区二区三区电影| 国产精品三级在线观看| 丝瓜av网站精品一区二区| 不卡av在线免费观看| 色88888久久久久久影院按摩| 欧美日韩国产欧美日美国产精品| 中文字幕第一区第二区| 中文字幕不卡三区| 欧美亚洲精品一区| 亚洲福利国产精品| 国产一区二区精品久久| av在线播放不卡| 欧美精品1区2区3区| 中文字幕一区在线观看视频| 日韩国产在线观看| 国产高清成人在线| 欧美精品 国产精品| 亚洲国产欧美日韩另类综合| 国内成人自拍视频| 国产精一品亚洲二区在线视频| 91小视频免费看| 国产精品毛片高清在线完整版| 激情综合一区二区三区| 欧美日韩国产经典色站一区二区三区| 成人综合婷婷国产精品久久 | 91在线播放网址| 97se亚洲国产综合自在线| 国产日韩欧美综合一区| 亚洲最大的成人av| 欧美剧情片在线观看| 亚洲网友自拍偷拍| 欧美成人一区二区三区| 日韩黄色一级片| 国产精品久久久久久久岛一牛影视| 国模大尺度一区二区三区| 在线不卡a资源高清| 免费欧美高清视频| 91精品欧美久久久久久动漫 | 欧美日韩国产成人在线免费| 亚洲午夜羞羞片| 欧美在线色视频| 中文字幕在线不卡国产视频| 久久青草欧美一区二区三区| 久久99精品久久久| 亚洲视频香蕉人妖| 91行情网站电视在线观看高清版| 亚洲乱码精品一二三四区日韩在线| 在线欧美小视频| 不卡在线观看av| 午夜精品123| 精品美女一区二区| 日本不卡高清视频| 91精选在线观看| 国产精品亚洲专一区二区三区 | 7777精品伊人久久久大香线蕉经典版下载 | 国产网红主播福利一区二区| 高清不卡在线观看| 亚洲福利视频一区| 日日摸夜夜添夜夜添国产精品| 精品国产乱码久久久久久闺蜜| 成人美女视频在线看| 国产精品伊人色| 亚洲一区二区在线免费看| 91在线码无精品| 不卡的看片网站| 日韩av中文字幕一区二区三区| 欧美日韩国产经典色站一区二区三区 | 国产不卡在线视频| 欧美日韩国产一级片| 奇米一区二区三区| 欧美高清在线精品一区| 亚洲男人天堂av| 久久久精品tv| 欧美中文字幕一区二区三区亚洲| 欧美一级一区二区| 不卡的av在线| 成人在线一区二区三区| 亚洲国产成人精品视频| 久久精品夜色噜噜亚洲a∨| 在线播放视频一区| av不卡免费电影| 日韩黄色免费网站| 亚洲欧美一区二区在线观看| aaa欧美色吧激情视频| 日韩高清在线观看| 18成人在线视频| 日韩欧美激情一区| 本田岬高潮一区二区三区| 亚洲一区自拍偷拍| 亚洲成在人线免费| 日韩免费电影网站| 欧美成人r级一区二区三区| 色婷婷综合中文久久一本| 国产在线播精品第三| 丝袜亚洲精品中文字幕一区| 国产精品嫩草99a| caoporm超碰国产精品| 一区二区三区四区在线播放 | 艳妇臀荡乳欲伦亚洲一区| 综合欧美一区二区三区| 国产亚洲欧洲997久久综合| 亚洲高清不卡在线| 亚洲午夜免费视频| 午夜伊人狠狠久久| 亚洲成国产人片在线观看| 一本大道av一区二区在线播放| 国产成人精品免费视频网站| 国产91丝袜在线播放| 欧美日韩精品一二三区| 欧洲精品一区二区三区在线观看| 欧美中文字幕一二三区视频| 97se亚洲国产综合自在线| 欧美在线啊v一区| 欧美视频中文字幕| 蜜桃精品视频在线| 亚洲精品亚洲人成人网| 久久日韩粉嫩一区二区三区| 国产精品久久久久三级| 国产成人在线网站| 欧美在线视频全部完| 欧美日韩高清影院| 精品久久久久一区| 久久久午夜精品理论片中文字幕| 国产精品私人自拍| 一区精品在线播放| 一区二区三区国产| 麻豆91精品91久久久的内涵| 国产调教视频一区| 国产精品国产成人国产三级 | 国产成人自拍网| 欧美在线小视频| 亚洲制服丝袜一区| 久久se这里有精品| 国产一区二区福利| 中文一区二区在线观看| 久久毛片高清国产| 国产日韩一级二级三级| 亚洲日本韩国一区| 奇米影视7777精品一区二区| 99re这里都是精品|