多线程生产者消费者问题, producer生产电影(两种), customer 观看电影
Film.java
package Film;
public class Film {
private String name;
private String actor;
private boolean flag = false;
public synchronized void set(String name, String actor)
throws InterruptedException {
if(!flag){
this.wait();
}
this.setName(name);
Thread.sleep(1000);
this.setActor(actor);
flag = false;
this.notify();
}
public synchronized void get() throws InterruptedException{
if(flag){
this.wait();
}
Thread.sleep(1000);
System.out.println("3"+this.getName()+"-->"+this.getActor());
flag=true;
this.notify();
}
public void setName(String name) {
this.name = name;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getName() {
return name;
}
public String getActor() {
return actor;
}
}
Producer.java
package Film;
public class Producer implements Runnable {
private Film film ;
public Producer(Film film) {
super();
this.film = film;
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 1; i < 10; i++) {
if (0==i%2) {
try {
System.out.println("1-produce film " + i);
film.set("film1", "actor1");
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
try {
System.out.println("1-produce film " + i);
film.set("film2", "actor2");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
请问第二行为什么会出现空值?
心有法竹
相关分类