import java.util.concurrent.locks.*;
class Demo
{
private String name;
private String sex;
private boolean flag=false;
Lock lock=new ReentrantLock();
Condition condition_in=lock.newCondition();
Condition condition_out=lock.newCondition();
public void setMas(String name,String sex)
{
lock.lock();
while(flag)
{
try
{
condition_in.await();
}
catch (InterruptedException e)
{
e.getStackTrace();
}
}
this.name=name;
this.sex=sex;
flag=true;
condition_out.signal();
lock.unlock();
}
public void out()
{
lock.lock();
while(!flag)
{
try
{
condition_out.await();
}
catch (InterruptedException e)
{
e.getStackTrace();
}
}
System.out.println(this.name+"===="+this.sex);
flag=false;
condition_in.signal();
lock.unlock();
}
}
class InputDemo implements Runnable
{
private Demo d;
InputDemo(Demo d)
{
this.d=d;
}
public void run()
{
int num=0;
while (true)
{
if (num==0)
{
d.setMas("MIKE","MAN");
}
else
{
d.setMas("丽丽丽丽","女女女女女女");
}
num=(num+1)%2;
}
}
}
class OutputDemo implements Runnable
{
private Demo d;
OutputDemo(Demo d)
{
this.d=d;
}
public void run()
{
while (true)
{
d.out();
}
}
}
class LockDemo
{
public static void main(String[] args)
{
Demo d=new Demo();
InputDemo id=new InputDemo(d);
OutputDemo od=new OutputDemo(d);
Thread t1=new Thread(id);
Thread t2=new Thread(od);
t1.start();
t2.start();
}
}
多线程生产与消费
最新推荐文章于 2022-01-10 16:50:37 发布