62,628
社区成员
发帖
与我相关
我的任务
分享
import java.util.ArrayList;
import java.util.List;
/**
* @author ZhengYesheng
*/
public class Resoure
{
private List<String> names = new ArrayList<>();
public void put(String name)
{
if (names.size() == 1)
{
synchronized (this)
{
try
{
this.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
names.add(name);
this.notifyAll();
}
public String get()
{
if (names.size() == 0)
{
synchronized (this)
{
try
{
this.wait();
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
String name = names.remove(0);
this.notifyAll();
return name;
}
}
Producter类
/**
* @author ZhengYesheng
*/
public class Producter extends Thread
{
private boolean bRun = true;
private Resoure resoure;
public Producter(Resoure resoure)
{
this.resoure = resoure;
}
@Override
public void run()
{
int i = 0;
String name;
while (bRun)
{
if (i == 0)
{
name = "李雷+男";
}
else
{
name = "韩梅梅+女";
}
//System.out.println("Producter : " + name);
synchronized (resoure)
{
resoure.put(name);
}
i = (i + 1) % 2;
}
}
}
Consumer类
/**
* @author ZhengYesheng
*/
public class Consumer extends Thread
{
private boolean bRun = true;
private Resoure resoure;
public Consumer(Resoure resoure)
{
this.resoure = resoure;
}
@Override
public void run()
{
String name;
while (bRun)
{
synchronized (resoure)
{
name=resoure.get();
}
System.out.println(name);
}
}
}
测试类Test_Priducter_Consumer
/**
* @author ZhengYesheng
*
*/
public class Test_Priducter_Consumer
{
/**
* @param args
*/
public static void main(String[] args)
{
Resoure resoure=new Resoure();
Producter p=new Producter(resoure);
Consumer c=new Consumer(resoure);
p.start();
c.start();
}
}
