线程通信—–消费者与生产者的问题
import Java .util.LinkedList;
public class ProductCustomerDemo {
public static void main(String[] args) {
Basket bas=new Basket();
ProductThread pt=new ProductThread(bas);
CustomerThread ct=new CustomerThread(bas);
pt.start();
ct.start();
}
}
class ProductThread extends Thread{
private Basket basket=null;
public ProductThread(Basket basket){
this.basket=basket;
}
@Override
public void run() {
basket.pushApple();
}
}
class CustomerThread extends Thread{
private Basket basket=null;
public CustomerThread(Basket basket){
this.basket=basket;
}
@Override
public void run() {
basket.popApple();
}
}
class Basket{
private LinkedList list=new LinkedList();
public synchronized void pushApple(){
for(int i=0;i<20;i++){
Apple apple=new Apple(i);
push(apple);
}
}
public synchronized void popApple(){
for(int i=0;i<20;i++){
Apple apple=new Apple(i);
pop(apple);
}
}
public void push(Apple apple){
if(list.size()==5){
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
list.addFirst(apple);
System.out.println(“已经添加”+apple.toString());
notify();
}
public void pop(Apple apple){
if(list.size()==0){
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
list.removeFirst();
System.out.println(“已经消费”+apple.toString());
notify();
}
}
class Apple{
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Apple(){}
public Apple(int id) {
super();
this.id = id;
}
@Override
public String toString() {
return “苹果”+(id+1);
}
}
import Java .util.LinkedList;
public class ProductCustomerDemo {
public static void main(String[] args) {
Basket bas=new Basket();
ProductThread pt=new ProductThread(bas);
CustomerThread ct=new CustomerThread(bas);
pt.start();
ct.start();
}
}
class ProductThread extends Thread{
private Basket basket=null;
public ProductThread(Basket basket){
this.basket=basket;
}
@Override
public void run() {
basket.pushApple();
}
}
class CustomerThread extends Thread{
private Basket basket=null;
public CustomerThread(Basket basket){
this.basket=basket;
}
@Override
public void run() {
basket.popApple();
}
}
class Basket{
private LinkedList list=new LinkedList();
public synchronized void pushApple(){
for(int i=0;i<20;i++){
Apple apple=new Apple(i);
push(apple);
}
}
public synchronized void popApple(){
for(int i=0;i<20;i++){
Apple apple=new Apple(i);
pop(apple);
}
}
public void push(Apple apple){
if(list.size()==5){
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
list.addFirst(apple);
System.out.println(“已经添加”+apple.toString());
notify();
}
public void pop(Apple apple){
if(list.size()==0){
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
list.removeFirst();
System.out.println(“已经消费”+apple.toString());
notify();
}
}
class Apple{
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Apple(){}
public Apple(int id) {
super();
this.id = id;
}
@Override
public String toString() {
return “苹果”+(id+1);
}
}