//生产消费者模式
public class ProcedureCustomerDemo
{
public static void main(String args[]){
Dug dug = new Dug();
Procedure procedure = new Procedure(dug);
Customer customer = new Customer(dug);
Thread t1 = new Thread(procedure);
Thread t2 = new Thread(customer);
t1.start();
t2.start();
}
}
class Dug
{
private int dugCount;
public synchronized void createDug(){
while(true){
if(dugCount>9){ //最多存放10只烤鸭
try{
System.out.println("烤鸭装盘已满,暂停制造");
this.wait();
}catch(Exception e){
}
}
System.out.println("生产第"+(++dugCount)+"只烤鸭");
try{
this.notify();
}catch(Exception e){
}
}
}
public synchronized void saleDug(){
while(true){
if(dugCount<1){
try{
System.out.println("烤鸭装盘已空,暂停卖出");
this.wait();
}catch(Exception e){
}
}
System.out.println("售出第"+(dugCount--)+"只烤鸭");
try{
this.notify();
}catch(Exception e){
}
}
}
}
class Procedure implements Runnable
{
private Dug dug;
public Procedure(Dug dug){
this.dug = dug;
}
public void run(){
dug.createDug();
}
}
class Customer implements Runnable
{
private Dug dug;
public Customer(Dug dug){
this.dug = dug;
}
public void run(){
dug.saleDug();
}
}
public class ProcedureCustomerDemo
{
public static void main(String args[]){
Dug dug = new Dug();
Procedure procedure = new Procedure(dug);
Customer customer = new Customer(dug);
Thread t1 = new Thread(procedure);
Thread t2 = new Thread(customer);
t1.start();
t2.start();
}
}
class Dug
{
private int dugCount;
public synchronized void createDug(){
while(true){
if(dugCount>9){ //最多存放10只烤鸭
try{
System.out.println("烤鸭装盘已满,暂停制造");
this.wait();
}catch(Exception e){
}
}
System.out.println("生产第"+(++dugCount)+"只烤鸭");
try{
this.notify();
}catch(Exception e){
}
}
}
public synchronized void saleDug(){
while(true){
if(dugCount<1){
try{
System.out.println("烤鸭装盘已空,暂停卖出");
this.wait();
}catch(Exception e){
}
}
System.out.println("售出第"+(dugCount--)+"只烤鸭");
try{
this.notify();
}catch(Exception e){
}
}
}
}
class Procedure implements Runnable
{
private Dug dug;
public Procedure(Dug dug){
this.dug = dug;
}
public void run(){
dug.createDug();
}
}
class Customer implements Runnable
{
private Dug dug;
public Customer(Dug dug){
this.dug = dug;
}
public void run(){
dug.saleDug();
}
}