日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java线程睡眠分析,java线程睡眠有关问题

發布時間:2024/1/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程睡眠分析,java线程睡眠有关问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java線程睡眠問題

這是我的代碼

package?org.com.JframeDemo;

public?class?ControlClass?{

private?int?readCount;?//?需要讀的讀者

private?int?writeCount;?//?需要寫的寫者

private?boolean?cRead;?//?讀者的狀態

private?boolean?cWrite;?//?學者的狀態

public?static?int?a;

public?ControlClass()?{?//?初始化數據

readCount?=?0;

writeCount?=?0;

cRead?=?false;

cWrite?=?false;

}

public?static?void?sleeptime()?{?//?睡眠時間

int?sleepTime?=?(int)?(Math.random());

try?{

Thread.sleep(sleepTime?*?10000);

}?catch?(Exception?e)?{

//?TODO:?handle?exception

e.printStackTrace();

}

}

public?synchronized?void?startRead()?{?//?讀者開始讀取

if?(cRead?==?false)?{

while?(writeCount?>?0)?{?//?寫者優先

try?{

a=0;

wait();

}?catch?(InterruptedException?e)?{

//?TODO?Auto-generated?catch?block

System.out.println(e.toString());

e.printStackTrace();

}

}

}

readCount++;

if?(readCount?==?1)?{

cRead?=?true;?//?返回有讀者正在讀

}

}

public?synchronized?void?endRead()?{?//?讀者結束讀取

--readCount;

if?(readCount?==?0)?{

cRead?=?false;

}

notifyAll();?//?釋放空間

}

public?synchronized?void?startWrite()?{?//?寫者開始寫

writeCount++;

if?(cRead?==?true?||?cWrite?==?true)?{

a=1;

try?{

wait();

}?catch?(InterruptedException?e)?{

//?TODO?Auto-generated?catch?block

System.out.println(e.toString());

e.printStackTrace();

}

}

cWrite?=?true;

}

public?synchronized?void?endWrite()?{

writeCount++;

cWrite?=?false;

notifyAll();

}

}

package?org.com.JframeDemo;

import?java.text.SimpleDateFormat;

import?java.util.Date;

import?javax.swing.JTextArea;

public?class?Reader?implements?Runnable?{

private?ControlClass?controlClass;

private?JTextArea?t;

private?int?reader;

public?static?String?str?=?"",time1,time2;

public?Reader(int?reader,?JTextArea?t,?ControlClass?controlClass)?{

this.reader?=?reader;

this.t?=?t;

this.controlClass?=?controlClass;

}

@Override

public?void?run()?{

//?TODO?Auto-generated?method?stub

while?(true)?{

final?SimpleDateFormat?format?=?new?SimpleDateFormat("HH:mm:ss");

time1?=?format.format(new?Date());

str?=?time1+"讀者"?+?reader?+?"準備讀取"?+?'\n';

t.append(str);

controlClass.startRead();?//?讀者開始工作

str?=?"讀者"?+?reader?+?"正在讀取"?+?'\n';

t.append(str);

ControlClass.sleeptime();?//?讀者處于工作階段

controlClass.endRead();?//?讀者結束讀取

總結

以上是生活随笔為你收集整理的java线程睡眠分析,java线程睡眠有关问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。