自制悲觀鎖
馬克- to-win:馬克 java社區(qū):防盜版實名手機(jī)尾號: 73203。
例 2.2.1.1
package com;
public class Ticket_Pess_MarkToWin {
private int number=4;
private int lock=0;
public synchronized int getLock()
{
(購買完整教程)
System.out.println("最后還剩"+number);
}else{
System.out.println("不夠了,買幾張失敗");
}
}
}
package com;
class MulThreMarkToWin extends Thread {
Ticket_Pess_MarkToWin ticPes_MarkToWin;
public MulThreMarkToWin(Ticket_Pess_MarkToWin ticPes_MarkToWin) {
(購買完整教程)
System.out.println("沒拿到鎖,沒干成");
}
}
}
class MulThreMarkToWinBatch extends Thread {
Ticket_Pess_MarkToWin ticPes_MarkToWin;
public MulThreMarkToWinBatch(Ticket_Pess_MarkToWin ticPes_MarkToWin) {
this.ticPes_MarkToWin=ticPes_MarkToWin;
}
public void run() {
(購買完整教程)
}
}
public class TestConcurBuy_MarkToWin {
public static void main(String[] args) {
Ticket_Pess_MarkToWin ticPes_MarkToWin=new Ticket_Pess_MarkToWin();
Thread t1 = new MulThreMarkToWin(ticPes_MarkToWin);
Thread t2 = new MulThreMarkToWinBatch(ticPes_MarkToWin);
Thread t3 = new MulThreMarkToWin(ticPes_MarkToWin);
t1.start();
t2.start();
t3.start();
}
}
輸出結(jié)果:
鎖的synchronized,導(dǎo)致等很長時間,用睡覺來模擬
買一張成功
最后還剩3
鎖的synchronized,導(dǎo)致等很長時間,用睡覺來模擬
買一張成功
最后還剩2
鎖的synchronized,導(dǎo)致等很長時間,用睡覺來模擬
不夠了,買幾張失敗
再運(yùn)行一遍,可能輸出的結(jié)果是:
鎖的synchronized,導(dǎo)致等很長時間,用睡覺來模擬
買一張成功
最后還剩3
鎖的synchronized,導(dǎo)致等很長時間,用睡覺來模擬
買幾張成功
最后還剩0
鎖的synchronized,導(dǎo)致等很長時間,用睡覺來模擬
不夠了,買一張失敗