[英]waiting for infinte time when timeout is given
我有一個用於wait(timeout)
的測試代碼。
public static void main(String[] args) throws Exception
{
Runnable r = new Runnable()
{
public void run()
{
while (true)
{
int random = (int)(Math.random() * 10);
synchronized(this)
{
try
{
wait(random);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
System.out.println(random);
}
}
};
new Thread(r).start();
}
但是,這似乎無法正常工作,理想情況下,它應該等待random
方法給出的特定時間並打印出來。 但是每次打印完幾個值后都會停止(隨機次數)。
無法識別問題所在。
您問題的關鍵在於wait
java doc,其狀態如下:-
指定的實時量或多或少已經過去。 但是,如果超時為零,則不考慮實時,線程只是等待直到通知。
因此,如果random
返回0 ,它將進入無限等待狀態直到得到通知為止,這顯然在您的代碼中沒有發生。
最好添加if
檢查random == 0 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.