閒來無事,在逛論壇時偶然看到這樣一道題:
子執行緒迴圈十次,接著主線程迴圈一百次,接著又回到子執行緒迴圈十次,然後主線程再迴圈一百次,如此迴圈往復,迴圈五十次。
嘗試著做了一下,首先定義了乙個內部類circle,類中有兩個方法分別演示子線和主線的迴圈,main方法和sub方法,並給這兩個方法加鎖,用synchronized修飾方法。接著在主函式中定義了乙個多執行緒方法,用來輸出五十次的子執行緒迴圈,在方法內進行了五十次的主線程迴圈。此時可以輸出五十次的主線和子線了,但是順序亂了,並不能按題目要求的那樣先子線迴圈十次接著主線迴圈一百次,解決辦法是定義乙個nowsub的布林方法,每次執行前先判斷,符合時執行,不符合時等待,執行結束後用notify喚起等待執行緒。
實現**如下:
public class communication
}}).start();
for(int i=1;i<=50;i++)
} static class circle catch (interruptedexception e)
}for(int j=1;j<=10;j++)
nowsub=false;
notify();
} public synchronized void main(int i) catch (interruptedexception e)
}for(int j=1;j<=100;j++)
nowsub=true;
notify();
} }}
輸出的結果如下
多執行緒的學習
工作需要要用到多執行緒了,呵呵,高科技呀 public partial class form1 form delegate void lbdelegate private void button1 click object sender,eventargs e private void gettim...
多執行緒的學習
多執行緒的建立方式有兩種 繼承thread類,並覆蓋run 方法 實現runnable介面,並實現run 方法 其中run 方法中存放的是執行緒執行的 其中實現介面的方式避免了單繼承的侷限性,定義執行緒時,建議使用實現介面的方式。學習多執行緒,要認清多執行緒的5種執行狀態,這5種狀態分別是 建立,執...
多執行緒學習
thread和runnable的區別 單繼承模式thread 而 runnable是介面 start 和run的區別 start是乙個執行緒只能啟動,run可以執行多次,並且run是呼叫當前正在執行的執行緒 wait notify object物件所具有的 sleep setpriority 同步機...