Código fuente de Monopoly Java
Importar local.tea.tea.flavor;
El inyector de clase pública extiende TTobj {
Inyector público (nombre de cadena){
Super (nombre);
}
Casa de té pública vacía (sabor sabor casa de té tt) {
tt.setTea(新茶(Sabor)) ;
System.out.println(nombre Sabor "hacer una taza");
TeaStall.releaseInfuseMan(this);
}
}
Paquete local.tea
TTobj de clase pública {
Nombre de cadena protegida;
TTobj público (nombre de cadena){
este.nombre = esta.getClass(). get simplename() nombre;
}
}
Empaque local.tea
Té de clase pública{
Estilo de enumeración estática pública{
West Lake Longjing, Dongting Biluochun, Baihao Silver Needle, Junshan Silver Needle, Huangshan Maofeng, Wuyi Rock Tea, Anxi Tieguanyin, Xinyang Maojian Tea, Lushan Yunwu, Lu'an Guapian.
}
Sabor privado;
Té público(sabor){
this.setFlavor(sabor);
}
sabor público void(sabor sabor){
this.flavor = sabor;
}
sabor público getFlavor () {
Regusto;
}
}
Paquete local.tea
Clase pública TeaClient se extiende TTobj para implementar Runnable {
Tea. Pruebe su sabor favorito = té. oler. Luan Guapian;
Cliente de profesor público(cadena cadena){
Super(cadena);
sistema println(este . nombre "chez") ;
}
TeaClient público (nombre de cadena, Tea.
saborSabor){
este(nombre);
favoritoSabor = sabor;
}
@override
public void Run(){
Té té = null
WaiterWaiter = null
Pruebe {
System.out.println (nombre "¡Camarero! ¡Prepara una taza de té!" sabor favorito);
camarero = teastall .
té = camarero . toma té();
} catch (InterruptedException e) {
System.out.println(name "¡Nadie se preocupa por mí! Estaba tan ¡Enojado porque se ha ido!" e . getstacktrace());
Regresar;
}
System.out.println(nombre "Taste Appreciation" tea . get sabor());
if (camarero!= null) {
camarero liberación();
}
System. out.println(name "Me voy~");
}
}
Paquete local.tea
Clase pública TeaMenu {
Chacha;
}
Paquete local.tea
Importar Java util .
Importar Java . util . concurrente .cola de bloqueo;
Casa de té de clase pública {
Nombre de cadena privada = "You Teahouse";
pública estática final int CLIENT _ MAX _ NUM = 5;
Cola de bloqueo estática privada lt infusion man gtinfuse men = new ArrayBlockingQueue lt infusion man gt (
1); p>Cola de bloqueo estática privada lt camareros gtwaiters = new ArrayBlockingQueue lt; camareros gt (
1
/**
* @param args); p>
*/
Public static void main(String[] args) {
Camareros.add(nuevo camarero("camarero");
InfuseMen.add(new InfuseMan("Cocinando"));
System.out.println(nombre "Abre la puerta");
New Silk(nuevo profesor cliente( " Tony Leung")). start();
Nueva publicación ("Carina Lau", tea.flavor.Wuyi rock tea).
start();
System.out.println(name "Hora de cierre");
}
El camarero estático público takeWaiter() lanza InterruptedException {< / p>
Devolver camareros.take();
}
public static void releaseWaiter(camarero){
waiters.add(camarero);
}
público estático infuse man take infuse man() lanza InterruptedException {
Devuelve infuse men();
}
liberación de vacío estático público InfuseMan(InfuseMan im){
infuse men add(im);
}
}
Paquete local.tea
Extensión de camarero de clase pública TTobj {
Camarero público(nombre de cadena){
Super(nombre); p>
}
Té. Orden de sabor;
TeacupTray TT = new TeacupTray();
Public void Takeaway(Tea. FlavorOrder) arroja una excepción interrumpida {
this.order = orden
System.out.println(nombre orden "Este caballero ordenó");
TeaStall.takeInfuseMan(). takeTea(this.order, TT);
}
Té público takeTea() {
System.out.println(nombre "El té está aquí") ;
Devolver TT .gettea();
}
Liberación de vacío público(){
TeaStall.releaseWaiter(this);
}
}
Formación de profesores de clase{
Casa de té privada;
Casa de té pública (){
Volver al té;
}
Set público vacíoTea(茶茶){
this.tea = tea;
}
}Paquete local.tea
Importar local.tea.tea.flavor;
El inyector de clase pública extiende TTobj {
Inyector público (nombre de cadena) {
Super (nombre);
}
Casa de té pública vacía (sabor sabor casa de té tt) {
tt.setTea(nuevo té (sabor));
System.out.println(nombre del sabor "hacer una taza");
TeaStall.releaseInfuseMan(this);
}
}
Paquete local.tea
Clase pública TTobj {
Nombre de cadena protegida; p>
TTobj público (nombre de cadena){
this.name = this.getClass().
get simplename() nombre;
}
}
Empaque local.tea
Té de clase pública{
Estilo de enumeración estática pública{
West Lake Longjing, Dongting Biluochun, Baihao Silver Needle, Junshan Silver Needle, Huangshan Maofeng, Wuyi Rock Tea, Anxi Tieguanyin, Xinyang Maojian Tea, Lushan Yunwu, Lu'an Guapian.
}
Sabor privado;
Té público(sabor){
this.setFlavor(sabor);
}
sabor público void(sabor sabor){
this.flavor = sabor;
}
sabor público getFlavor () {
Regusto;
}
}
Paquete local.tea
Clase pública TeaClient se extiende TTobj para implementar Runnable {
Tea. Pruebe su sabor favorito = té. oler. Luan Guapian;
Cliente de profesor público(cadena cadena){
Super(cadena);
sistema println(este . nombre "chez") ;
}
TeaClient público (nombre de cadena, Tea.
saborSabor){
este(nombre);
favoritoSabor = sabor;
}
@override
public void Run(){
Té té = null
WaiterWaiter = null
Pruebe {
System.out.println (nombre "¡Camarero! ¡Prepara una taza de té!" sabor favorito);
camarero = teastall .
té = camarero . toma té();
} catch (InterruptedException e) {
System.out.println(name "¡Nadie se preocupa por mí! Estaba tan ¡Enojado porque se ha ido!" e . getstacktrace());
Regresar;
}
System.out.println(nombre "Taste Appreciation" tea . get sabor());
if (camarero!= null) {
camarero liberación();
}
System. out.println(name "Me voy~");
}
}
Paquete local.tea
Clase pública TeaMenu {
Chacha;
}
Paquete local.tea
Importar Java util .
Importar Java . util . concurrente .cola de bloqueo;
Casa de té de clase pública {
Nombre de cadena privada = "You Teahouse";
pública estática final int CLIENT _ MAX _ NUM = 5;
Cola de bloqueo estática privada lt infusion man gtinfuse men = new ArrayBlockingQueue lt infusion man gt (
1); p>Cola de bloqueo estática privada lt camareros gtwaiters = new ArrayBlockingQueue lt; camareros gt (
1
/**
* @param args); p>
*/
Public static void main(String[] args) {
Camareros.add(nuevo camarero("camarero");
InfuseMen.add(new InfuseMan("Cocinando"));
System.out.println(nombre "Abre la puerta");
New Silk(nuevo profesor cliente( " Tony Leung")). start();
Nueva publicación ("Carina Lau", tea.flavor.Wuyi rock tea).
start();
System.out.println(name "Hora de cierre");
}
El camarero estático público takeWaiter() lanza InterruptedException {< / p>
Devolver camareros.take();
}
public static void releaseWaiter(camarero){
waiters.add(camarero);
}
público estático infuse man take infuse man() lanza InterruptedException {
Devuelve infuse men();
}
liberación de vacío estático público InfuseMan(InfuseMan im){
infuse men add(im);
}
}
Paquete local.tea
Extensión de camarero de clase pública TTobj {
Camarero público(nombre de cadena){
Super(nombre); p>
}
Té. Orden de sabor;
TeacupTray TT = new TeacupTray();
Public void Takeaway(Tea. FlavorOrder) arroja una excepción interrumpida {
this.order = orden
System.out.println(nombre orden "Este caballero ordenó");
TeaStall.takeInfuseMan(). takeTea(this.order, TT);
}
Té público takeTea() {
System.out.println(nombre "El té está aquí") ;
Devolver TT .gettea();
}
Liberación de vacío público(){
TeaStall.releaseWaiter(this);
}
}
Formación de profesores de clase{
Casa de té privada;
Casa de té pública (){
Volver al té;
}
Set público vacíoTea(茶茶){
this.tea = tea;
}
}
===========================
Resultado de la ejecución:
Se abrió una casa de té.
El profesor Tony Leung está aquí.
La profesora Carina Lau está aquí.
¡El profesor Tony Leung está reclutando a un segundo niño! ¡Prepara una taza de té! Té Liu'an Guapian
El camarero Zhang Er, este caballero pidió Lu'an Guapian.
El rastreador cocinó una taza de rodajas de melón.
El camarero Xiao Zhang'er Tea está aquí.
El maestro Tony Leung probó y elogió a Lu'an Guapian.
Maestro Tony Leung, me voy~
Una casa de té está cerrada.
¡La maestra de primaria de Carina Lau! ¡Prepara una taza de té! Té de Roca Wuyi
El camarero Xiao Zhanger, este caballero pidió té de Roca Wuyi.
La tetera preparó una taza de té de roca Wuyi.
El camarero Xiao Zhang’er Tea está aquí
La maestra Carina Lau probó y elogió el té Wuyi Rock.
Maestra Carina Lau, me voy~