,本次電影的座位共
100個
(本場電影只能賣100張票
)。**如下:
publicclass
tickects implements runnable catch
(interruptedexception e)
system.
out.println(thread.currentthread().getname()+"
售出了第
"+ticket--+"張票"
); }}}
}
public執行結果如下:class
demo01
出現的問題:出現重複票 錯誤票0
解決方法:①同步**塊 使用synchronized 關鍵字 (鎖物件)
public② 同步方法class
tickects02 implements runnable
catch
(interruptedexception e)
system.
out.println(thread.currentthread().getname()+"
售出了第
"+ticket--+"張票"
); }
} }}
}public
class
demo02
}
public synchronized void method()
public③用lock 介面class
tickects03 implements runnable
}//同步方法(內建鎖物件this)
public synchronized void
sale()
catch
(interruptedexception e)
system.
out.println(thread.currentthread().getname()+"
售出了第
"+ticket--+"張票"
); }
}}public
class
demo03
}
public這三種方法列印出結果是相同的:class
tickects04 implements runnable
catch
(interruptedexception e)
system.
out.println(thread.currentthread().getname()+"
售出了第
"+ticket--+"張票"
); }
//釋放鎖
lock
.unlock();}}
}public
class
demo04
}
無重複,無錯誤票;
Java 執行緒安全的Map的實現方式3種
1.hashmap,treemap 未進行同步考慮,是執行緒不安全的。2.hashtable 和 concurrenthashmap 都是執行緒安全的。區別在於他們對加鎖的範圍不同,hashtable 對整張hash表進行加鎖,而concurrenthashmap將hash表分為16桶 segmen...
建立執行緒的3種方式
1 定義thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run 方法稱為執行體。2 建立thread子類的例項,即建立了執行緒物件。3 呼叫執行緒物件的start 方法來啟動該執行緒。public class mythread extends th...
執行緒通訊 3種方式
一 傳統執行緒通訊 synchronized wait notify object類的wait notify notifyall 三個方法必須由同步監視器物件來呼叫,分兩種情況 a 同步方法,該類預設例項 this 就是同步監視器,可以在同步方法中可以直接呼叫 b 同步 塊,同步監視器是synchr...