package com.thread;
public class ThreadCommunicationDeadLock {
public static void main(String[] args) {
Resource resource=new Resource();
Thread t1=new Thread(new Producer(resource));
Thread t2=new Thread(new CCustomer(resource));
t1.start();
t2.start();
}
}
class Resource {
private int count = 0;
private String name = "apple";
boolean flag=false;//flag标记 默认没有生产
public void set() {
count++;
System.out.println("producer"+Thread.currentThread().getName() +" ..."+ name + "--" + count);
}
/**
* @return the flag
*/
public boolean getFlag() {
return flag;
}
/**
* @param flag the flag to set
*/
public void setFlag(boolean flag) {
this.flag = flag;
}
public void out() {
System.out.println("customer"+Thread.currentThread().getName() +"..."+ name + "--" + count);
}
}
class Producer implements Runnable {
Resource resource = null;
public Producer(Resource resource) {
this.resource = resource;
}
@Override
public void run() {
while (true) {
if (resource.flag==false) {
resource.set();
resource.setFlag(true);
}
}
}
}
class CCustomer implements Runnable {
Resource resource = null;
public CCustomer(Resource resource) {
super();
this.resource = resource;
}
@Override
public void run() {
while(true)
{
if (resource.flag==true) {
resource.out();
resource.setFlag(false);
}
}
}
}