线程操作案例——生产者及消费者
线程操作中有一个经典案例程序——生产者消费者问题,即生产者不断生产,消费者不断取走生产者生的产品
首先定义一个保存信息的类Info.java
class Info {
//信息默认值
private String name = "李兴华";
private String content = "Java讲师";
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getContent(){
return content;
}
public void setContent(String content){
this.content = content;
}
}
因为生产者和消费者要操作同一个空间的内容,所以生产者和消费者分别实现Runnable接口,并接收Info
类的应用
生产者
class Producer implements Runnable{
/**
* 保存Info引用
*/
private Info info = null;
/**
* 通过构造方法设置Info属性内容
* @param info
*/
public Producer(Info info){
this.info = info;
}
@Override
public void run(){
//定义标记位
boolean flag = false;
for (int i = 0; i < 50; i++) {
if(flag){
this.info.setName("李三");
try{
Thread.sleep(90);
}catch (InterruptedException e){
e.printStackTrace();
}
this.info.setContent("老师");
flag = false;
}else {
this.info.setName("李四");
try{
Thread.sleep(90);
}catch (InterruptedException e){
e.printStackTrace();
}
this.info