簡體   English   中英

等待超時時給出的超時時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM