黑马程序员技术交流社区
标题:
程序包lock不存在
[打印本页]
作者:
刘文飞
时间:
2012-11-17 19:14
标题:
程序包lock不存在
本帖最后由 刘文飞 于 2012-11-17 21:05 编辑
import java.util.concurrent.locks.*;
class Resource{
private int count;
private boolean flag;
private Lock lock = new ReentrantLock();
private Condition condition_pro = new lock.newCondition();//多了个new
private Condition condition_con = new lock.newCondition();
public void produce() throws InterruptedException
{
lock.lock();
try{
while(flag)
{
condition_pro.await();
}
System.out.println(Thread.currentThread().getName() + "---生产---" + ++count );
flag = true;
condition_con.signal();
}
finally
{
lock.unlock();
}
}
public void consume() throws InterruptedException
{
lock.lock();
try
{
while(!flag)
{
condition_con.await();
}
System.out.println(Thread.currentThread().getName() + "---消费---" + count--);
flag = false;
condition_pro.signal();
}
finally
{
lock.unlock();
}
}
}
class Producer implements Runnable
{
private Resource res;
public Producer(Resource res)
{
this.res = res;
}
public void run()
{
while(true)
{
try
{
res.produce();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
class Consumer implements Runnable
{
private Resource res;
public Consumer(Resource res)
{
this.res = res;
}
public void run()
{
while(true)
{
try
{
res.consume();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
public class ProducerConsumerLockDemo
{
public static void main(String[] args)
{
Resource res = new Resource();
Producer pro = new Producer(res);
Consumer con = new Consumer(res);
Thread t1 = new Thread(pro);
Thread t2 = new Thread(pro);
Thread t3 = new Thread(pro);
Thread t4 = new Thread(con);
Thread t5 = new Thread(con);
Thread t6 = new Thread(con);
Thread t7 = new Thread(con);
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2