進口local . tea . tea . flavor;
公共類註入器擴展TTobj {
公共註入人(字符串名稱){
超級(名);
}
公共空茶座(風味風味茶座tt) {
tt.setTea(新茶(風味));
System.out.println(名稱+“沏壹杯”+風味);
TeaStall.releaseInfuseMan(這個);
}
}
包local.tea
公共類TTobj {
受保護的字符串名稱;
公共TTobj(字符串名){
this.name = this.getClass()。get simplename()+name;
}
}
包local.tea
公共類茶{
公共靜態枚舉風格{
西湖龍井、洞庭碧螺春、白浩銀針、君山銀針、黃山毛峰、武夷巖茶、安溪鐵觀音、信陽毛尖茶、廬山雲霧、六安瓜片。
}
私房風味香精;
公共茶(風味風味){
this.setFlavor(風味);
}
public void set Flavor(Flavor Flavor){
this.flavor =風味;
}
公共風味getFlavor() {
回味;
}
}
包local.tea
公共類TeaClient擴展TTobj實現Runnable {
茶。口味喜歡的口味=茶。味道。欒瓜片;
公共教師客戶端(字符串字符串){
超級(字符串);
system . out . println(this . name+“chez”);
}
public TeaClient(串名,Tea。風味風味){
這個(名字);
favoriteFlavor =風味;
}
@覆蓋
公共無效運行(){
Tea tea = null
服務員服務員= null
嘗試{
System.out.println(name+"小二!泡杯茶!”+favorite flavor);
waiter = teastall . take waiter();
waiter . take order(favorite flavor);
tea = waiter . take tea();
} catch (InterruptedException e) {
System.out.println(name+“沒人管我!我壹氣之下就走了!”+e . getstacktrace());
返回;
}
System.out.println(name+"品鑒贊"+tea . get flavor());
如果(服務員!= null) {
waiter . release();
}
System.out.println(name+“我要走了~”);
}
}
包local.tea
公共類TeaMenu {
茶茶;
}
包local.tea
導入Java . util . concurrent . arrayblockingqueue;
導入Java . util . concurrent . blocking queue;
公共類茶座{
私靜串名=“有茶館”;
public static final int CLIENT _ MAX _ NUM = 5;
私有靜態阻塞隊列& lt輸液人& gtinfuse men = new ArrayBlockingQueue & lt;輸液人& gt(
1);
私有靜態阻塞隊列& lt服務員& gtwaiters = new ArrayBlockingQueue & lt;服務員& gt(
1);
/**
* @param args
*/
公共靜態void main(String[] args) {
Waiters.add(新服務員(“小二”);
InfuseMen.add(新的InfuseMan(“烹飪”));
System.out.println(name+“開門”);
新語絲(新老師客戶(“梁朝偉”))。start();
新帖(“劉嘉玲”,茶.味.武夷巖茶)。start();
System.out.println(名稱+"關閉時間");
}
public static Waiter takeWaiter()拋出InterruptedException {
返回waiters . take();
}
public static void releaseWaiter(服務員服務員){
waiters.add(服務員);
}
public static infuse man take infuse man()拋出InterruptedException {
返回infuse men . take();
}
public static void release InfuseMan(InfuseMan im){
infuse men . add(im);
}
}
包local.tea
公共類等待程序擴展TTobj {
公共服務員(字符串名){
超級(名);
}
茶。風味順序;
TeacupTray TT = new TeacupTray();
公共無效外賣(茶。口味順序)引發中斷的異常{
this.order = order
System.out.println(name+“這位先生點的”+order);
TeaStall.takeInfuseMan()。takeTea(this.order,TT);
}
公共茶takeTea() {
System.out.println(name+“茶來了”);
返回TT . gettea();
}
公共無效發布(){
TeaStall.releaseWaiter(這個);
}
}
班級教師培訓{
私房茶茶;
公共茶座(){
回茶;
}
公共空setTea(茶茶){
this.tea =茶;
}
}包local.tea
進口local . tea . tea . flavor;
公共類註入器擴展TTobj {
公共註入人(字符串名稱){
超級(名);
}
公共空茶座(風味風味茶座tt) {
tt.setTea(新茶(風味));
System.out.println(名稱+“沏壹杯”+風味);
TeaStall.releaseInfuseMan(這個);
}
}
包local.tea
公共類TTobj {
受保護的字符串名稱;
公共TTobj(字符串名){
this.name = this.getClass()。get simplename()+name;
}
}
包local.tea
公共類茶{
公共靜態枚舉風格{
西湖龍井、洞庭碧螺春、白浩銀針、君山銀針、黃山毛峰、武夷巖茶、安溪鐵觀音、信陽毛尖茶、廬山雲霧、六安瓜片。
}
私房風味香精;
公共茶(風味風味){
this.setFlavor(風味);
}
public void set Flavor(Flavor Flavor){
this.flavor =風味;
}
公共風味getFlavor() {
回味;
}
}
包local.tea
公共類TeaClient擴展TTobj實現Runnable {
茶。口味喜歡的口味=茶。味道。欒瓜片;
公共教師客戶端(字符串字符串){
超級(字符串);
system . out . println(this . name+“chez”);
}
public TeaClient(串名,Tea。風味風味){
這個(名字);
favoriteFlavor =風味;
}
@覆蓋
公共無效運行(){
Tea tea = null
服務員服務員= null
嘗試{
System.out.println(name+"小二!泡杯茶!”+favorite flavor);
waiter = teastall . take waiter();
waiter . take order(favorite flavor);
tea = waiter . take tea();
} catch (InterruptedException e) {
System.out.println(name+“沒人管我!我壹氣之下就走了!”+e . getstacktrace());
返回;
}
System.out.println(name+"品鑒贊"+tea . get flavor());
如果(服務員!= null) {
waiter . release();
}
System.out.println(name+“我要走了~”);
}
}
包local.tea
公共類TeaMenu {
茶茶;
}
包local.tea
導入Java . util . concurrent . arrayblockingqueue;
導入Java . util . concurrent . blocking queue;
公共類茶座{
私靜串名=“有茶館”;
public static final int CLIENT _ MAX _ NUM = 5;
私有靜態阻塞隊列& lt輸液人& gtinfuse men = new ArrayBlockingQueue & lt;輸液人& gt(
1);
私有靜態阻塞隊列& lt服務員& gtwaiters = new ArrayBlockingQueue & lt;服務員& gt(
1);
/**
* @param args
*/
公共靜態void main(String[] args) {
Waiters.add(新服務員(“小二”);
InfuseMen.add(新的InfuseMan(“烹飪”));
System.out.println(name+“開門”);
新語絲(新老師客戶(“梁朝偉”))。start();
新帖(“劉嘉玲”,茶.味.武夷巖茶)。start();
System.out.println(名稱+"關閉時間");
}
public static Waiter takeWaiter()拋出InterruptedException {
返回waiters . take();
}
public static void releaseWaiter(服務員服務員){
waiters.add(服務員);
}
public static infuse man take infuse man()拋出InterruptedException {
返回infuse men . take();
}
public static void release InfuseMan(InfuseMan im){
infuse men . add(im);
}
}
包local.tea
公共類等待程序擴展TTobj {
公共服務員(字符串名){
超級(名);
}
茶。風味順序;
TeacupTray TT = new TeacupTray();
公共無效外賣(茶。口味順序)引發中斷的異常{
this.order = order
System.out.println(name+“這位先生點的”+order);
TeaStall.takeInfuseMan()。takeTea(this.order,TT);
}
公共茶takeTea() {
System.out.println(name+“茶來了”);
返回TT . gettea();
}
公共無效發布(){
TeaStall.releaseWaiter(這個);
}
}
班級教師培訓{
私房茶茶;
公共茶座(){
回茶;
}
公共空setTea(茶茶){
this.tea =茶;
}
}
=========================
運行結果:
有壹家茶館開張了。
梁朝偉老師來了。
劉嘉玲老師來了。
梁朝偉老師招小二!泡杯茶!六安瓜片茶
服務員小張耳,這位先生點了六安瓜片。
纖夫煮了壹杯鑾瓜片。
服務員小張耳茶來了
梁朝偉老師品嘗並稱贊六安瓜片。
梁朝偉老師,我走了~
有壹家茶館關門了。
劉嘉玲小二老師!泡杯茶!武夷巖茶
服務員小張耳,這位先生點了武夷巖茶。
沏茶人煮泡了壹杯武夷巖茶。
服務員小張耳茶來了
劉嘉玲老師品嘗並稱贊武夷巖茶。
劉嘉玲老師,我走了~