package com;
public class mythreadprinter2 implements runnable
private mythreadprinter2(string name, object prev, object self)
@override
public void run()
try catch (interruptedexception e) }
}}public static void main(string args) throws exception }/*
* *
* 思路分析:
* 該問題為三個執行緒間的同步喚醒操作,主要的目的就是threada->tthreadb->threadc->threada迴圈執行單個執行緒.
* 為了控制線程執行的順序
* 就必須確定喚醒,等待的順序,所以每乙個執行緒必須同時持有兩個物件鎖,才能繼續執行,
* 乙個物件鎖是prev,就是前乙個執行緒所持有的物件鎖.還有乙個就是自身物件鎖,
* 主要的思想就是,為了控制執行的順序,必須先持有prev鎖,也就是前乙個執行緒要釋放自身
* 的物件鎖,再去申請自身的物件鎖,兩者兼備是列印,之後首先呼叫self.notify()釋放自身物件鎖,
* 喚醒下乙個執行緒等待,在呼叫prev.wait()釋放prev物件鎖,終止當前程序,等待迴圈結束再次被喚醒
* *
* */
JAVA多執行緒列印ABC
多執行緒中乙個很有名的例題就是多執行緒列印 abc,要求用三個執行緒,分別是列印 a,列印 b,列印 c,輪流喚醒和鎖死,最終列印出10組 abc。created by 123 on 2016 8 30.public class printabc 將列印a,列印b,列印c分別列為三個互斥的方法,寫在...
java 多執行緒列印ABC
方法千千中,開始看到這個,我立馬想到了cyclicbarrier,能讓abc在列印在一組,可是控制不了abc列印的順序 後來自己用了乙個最簡單的synchronize的迴圈實現了,可以感覺沒什麼成就感 package dirk.zhang public class printabc class th...
java 多執行緒列印ABC
方法千千中,開始看到這個,我立馬想到了cyclicbarrier,能讓abc在列印在一組,可是控制不了abc列印的順序 後來自己用了乙個最簡單的synchronize的迴圈實現了,可以感覺沒什麼成就感 package dirk.zhang public class printabc class th...