1. 利用synchronized
思路:
列印a時,必須先拿到 b,c鎖, 列印完了之後,釋放a鎖,然後列印b的執行緒拿到a鎖後就可以列印b,依次迴圈。
public class mythreadprinter implements runnable
try catch (interruptedexception e) }}
}public static void main(string args) throws exception
}
2.利用lock
public class mythreadprinter_lock
public class printera implements runnable catch (interruptedexception e)
}system.out.println("第"+i+"次列印"+cur_name);
cur_name = "b";
conditionb.signal();
}catch (exception e)finally }}
}public class printerb implements runnable catch (interruptedexception e)
}system.out.println("第"+i+"次列印"+cur_name);
cur_name = "c";
conditionc.signal();
}catch (exception e)finally }}
}public class printerc implements runnable catch (interruptedexception e)
}system.out.println("第"+i+"次列印"+cur_name);
cur_name = "a";
conditiona.signal();
}catch (exception e)finally }}
}}
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...