class Resource
{
Resource(){ m_name = ""; m_number=0; m_flag = false; }
public synchronized void set(String name)
{
while (m_flag == true)
{
try { wait(); } catch (Exception e){}
}
m_name = name;
System.out.println("----生产者:" + m_name + "_"+ ++m_number);
m_flag = true;
notifyAll();
}
public synchronized void out()
{
while (m_flag == false)
{
try{ wait(); }catch(Exception e){}
}
System.out.println("消费者:" + m_name + "_"+ m_number);
m_flag = false;
notifyAll();
}
private String m_name;
private int m_number;
private boolean m_flag;
}
class Producer implements Runnable
{
Producer(Resource res){ m_res = res; }
public void run()
{
while (true)
{
m_res.set("A");
}
}
private Resource m_res;
}
class Consumer implements Runnable
{
Consumer(Resource res){ m_res = res; }
public void run()
{
while (true)
{
m_res.out();
}
}
private Resource m_res;
}
class ProducerConsumer
{
public static void main(String[] args)
{
Resource r = new Resource();
Producer p = new Producer(r);
Consumer c = new Consumer(r);
new Thread(p).start();
new Thread(c).start();
new Thread(p).start();
new Thread(c).start();
}
}
{
Resource(){ m_name = ""; m_number=0; m_flag = false; }
public synchronized void set(String name)
{
while (m_flag == true)
{
try { wait(); } catch (Exception e){}
}
m_name = name;
System.out.println("----生产者:" + m_name + "_"+ ++m_number);
m_flag = true;
notifyAll();
}
public synchronized void out()
{
while (m_flag == false)
{
try{ wait(); }catch(Exception e){}
}
System.out.println("消费者:" + m_name + "_"+ m_number);
m_flag = false;
notifyAll();
}
private String m_name;
private int m_number;
private boolean m_flag;
}
class Producer implements Runnable
{
Producer(Resource res){ m_res = res; }
public void run()
{
while (true)
{
m_res.set("A");
}
}
private Resource m_res;
}
class Consumer implements Runnable
{
Consumer(Resource res){ m_res = res; }
public void run()
{
while (true)
{
m_res.out();
}
}
private Resource m_res;
}
class ProducerConsumer
{
public static void main(String[] args)
{
Resource r = new Resource();
Producer p = new Producer(r);
Consumer c = new Consumer(r);
new Thread(p).start();
new Thread(c).start();
new Thread(p).start();
new Thread(c).start();
}
}