原贴内容请见: http://topic.csdn.net/u/20100116/17/6a204504-9e70-435f-be55-f0630ed12fdf.html?seed=942806558&r=62778073#r_62778073 请大牛指正. 产品类: package selfimpr.producerCustomer; /** * 产品 * @author selfimpr * @blog http://blog.csdn.net/lgg201 * @email lgg860911@yahoo.com.cn * */ public class Product { private int id; private String name; public Product(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return "Product: {id: " + this.id + ", name: " + this.name + "};"; } } 生产者类: package selfimpr.producerCustomer; import java.util.List; /** * 生产者线程, 将database实现 * @author selfimpr * @blog http://blog.csdn.net/lgg201 * @email lgg860911@yahoo.com.cn * */ public class Producer implements Runnable { private List<Product> database; private static int count = 0; private int sn; public Producer(int sn, List<Product> database) { this.sn = sn; this.database = database; } @Override public void run() { while (true) { if (database.size() < 10) { produce(); } try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } private void produce() { synchronized (database) { Product product = new Product(count, "product_" + count++); database.add(product); System.out.println("Producer[" + this.sn + "] produce " + product); } } } 消费者类: package selfimpr.producerCustomer; import java.util.List; /** * 消费者线程, 同步database * @author selfimpr * @blog http://blog.csdn.net/lgg201 * @email lgg860911@yahoo.com.cn * */ public class Customer implements Runnable { private List<Product> database; private int sn; public Customer(int sn, List<Product> database) { this.sn = sn; this.database = database; } @Override public void run() { while (true) { if (database.size() > 0) { custom(); } try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } private void custom() { synchronized (database) { if (database.size() > 0) { Product product = database.remove(0); System.err.println("Customer[" + this.sn + "] custom " + product); } } } } 主程序: package selfimpr.producerCustomer; import java.util.ArrayList; import java.util.List; /** * 运行入口 * @author selfimpr * @blog http://blog.csdn.net/lgg201 * @email lgg860911@yahoo.com.cn * */ public class Main { public static void main(String[] args) { List<Product> database = new ArrayList<Product>(); Thread producer_1 = new Thread(new Producer(1, database)); Thread producer_2 = new Thread(new Producer(2, database)); Thread customer_1 = new Thread(new Customer(1, database)); Thread customer_2 = new Thread(new Customer(2, database)); Thread customer_3 = new Thread(new Customer(3, database)); producer_1.start(); producer_2.start(); customer_1.start(); customer_2.start(); customer_3.start(); } }