3 つのスレッド、ABC を 10 回ループして出力します。

public static class ThreadPrinterimplements Runnable {  
        private String name;  
        private Object prev;  
        private Object self;  
   
        private ThreadPrinter(String name, Object prev, Object self) {  
            this.name = name;  
            this.prev = prev;  
            this.self = self;  
        }  
   
        @Override  
        public void run() {  
            int count = 3;   //印刷回数
            while (count > 0) {//マルチスレッド同時実行、if は使用できない、誤ったウェイクアップ同期を避けるためにループを使用して待機条件をテストする必要がある (  
                prev ) { // 最初に  
                    同期された前のロックを取得します (自己) {// 次に、自己ロックを取得します  
                        System.out.print(name);  
                        count--;  
   
                        self.notifyAll();// まず self を解放し、他のスレッドを起動して自己ロックを競合する  
                    }  
                    try {  
                        prev.wait(); // prev を再度解放し、スリープそしてウェイクアップを待ちます  
                        / ** 
                         * Notice() が呼び出された後、オブジェクトのロックはすぐには解放されませんが、ロックは対応する synchronized(){} ステートメント ブロックの実行後に自動的に解放されることに注意してください。 * JVM will wait( ) 
                         オブジェクト ロックのスレッド スレッドをランダムに選択し、それにオブジェクト ロックを与え、スレッドをウェイクアップして、実行を継続します。 
                         */  
                    } catch (InterruptedException e) {  
                        e.printStackTrace();  
                    }  
    public   static void main(String                 [       ] args) throws Exception {   Object a
            =   new
        Object           ();           オブジェクト b = 新しい Object();           オブジェクト c = 新しい Object();           ThreadPrinter pa = new ThreadPrinter("A", c, a);           ThreadPrinter pb = new ThreadPrinter("B", a, b);           ThreadPrinter pc = new ThreadPrinter("C", b, c);           新しいスレッド(pa).start();        // Thread.sleep(3);           新しいスレッド(pb).start();         // Thread.sleep(10);           新しいスレッド(pc).start();  

   







   
   





    // Thread.sleep(10);  
    }  

おすすめ

転載: blog.csdn.net/u014304688/article/details/71189398