一道執行緒間通訊的演算法題目

2021-09-10 22:59:24 字數 565 閱讀 7675

題目是這樣的

有三個執行緒,迴圈輸出,需要按照順序列印10次,比如執行緒1,執行緒2,執行緒3分別列印0,1,2

最後的輸出結果就是012012......一共10次

public class lockthreadtest extends thread

public lockthreadtest(int x)

@override

public void run() catch (exception e)

}system.out.print(x);

myclass.x++;

myclass.class.notifyall();}}

}public static void main(string args)

}

最後的輸出結果是

解題過程:

1.notifyall()不會直接去喚醒等待的執行緒而是要等待該監視器鎖被釋放後才會讓被喚醒的執行緒繼續執行

聽來的一道演算法題目

今天在公司,聽到同事在討論一道演算法題 現有乙個函式可以得到1 5的隨機數,求如何利用該函式得到1 7的隨機數 本人的方法是 因為5的二進位制表示為101,7的二進位制表示為111 這樣每次隨機生成1 5,然後取其二進位制的最低位,然後隨機三次,組合,得到,即能隨機得到1 7 而聽同事們講的是 取模...

關於多執行緒的一道題目

題目大意 有四個執行緒,每個執行緒輸出1,2,3,4,設計程式使得依次輸出 1111222233334444 求解思路 建立乙個物件o,當四個執行緒依次輸出1後,檢測已經輸出的次數count,如果輸出次數為1,2,3,那麼讓執行緒進入物件o的等待集,如果為4,那麼喚醒o中等待集中所有執行緒並將cou...

一道this的題目

請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...