如何用notify()和wait()实现生产消费者模式处理长尾词查询?

2026-04-15 08:074阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计482个文字,预计阅读时间需要2分钟。

如何用notify()和wait()实现生产消费者模式处理长尾词查询?

javaimport java.util.LinkedList;

/** * 库存类Storage实现缓冲区 */public class Storage { // 库存最大存储量 private final int MAX_SIZE=100; // 库存存储的载体 private LinkedList list=new LinkedList();}

gistfile1.txt

mport java.util.LinkedList; /** * 仓库类Storage实现缓冲区 * * */ public class Storage { // 仓库最大存储量 private final int MAX_SIZE = 100; // 仓库存储的载体 private LinkedList list = new LinkedList(); // 生产num个产品 public void produce(int num) { // 同步代码段 synchronized (list) { // 如果仓库剩余容量不足 while (list.size() + num > MAX_SIZE) { System.out.println(":" + num + "/t:" + list.size() + "/t暂时不能执行生产任务!"); try { // 由于条件不满足,生产阻塞 list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 生产条件满足情况下,生产num个产品 for (int i = 1; i <= num; ++i) { list.add(new Object()); } System.out.println(":" + num + "/t:" + list.size()); list.notifyAll(); } } // 消费num个产品 public void consume(int num) { // 同步代码段 synchronized (list) { // 如果仓库存储量不足 while (list.size() < num) { System.out.println(":" + num + "/t:" + list.size() + "/t暂时不能执行生产任务!"); try { // 由于条件不满足,消费阻塞 list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 消费条件满足情况下,消费num个产品 for (int i = 1; i <= num; ++i) { list.remove(); } System.out.println(":" + num + "/t:" + list.size()); list.notifyAll(); } } // get/set方法 public LinkedList getList() { return list; } public void setList(LinkedList list) { this.list = list; } public int getMAX_SIZE() { return MAX_SIZE; } } /** * 生产者类Producer继承线程类Thread * * */ public class Producer extends Thread { // 每次生产的产品数量 private int num; // 所在放置的仓库 private Storage storage; // 构造函数,设置仓库 public Producer(Storage storage) { this.storage = storage; } // 线程run函数 public void run() { produce(num); } // 调用仓库Storage的生产函数 public void produce(int num) { storage.produce(num); } // get/set方法 public int getNum() { return num; } public void setNum(int num) { this.num = num; } public Storage getStorage() { return storage; } public void setStorage(Storage storage) { this.storage = storage; } } /** * 消费者类Consumer继承线程类Thread * * */ public class Consumer extends Thread { // 每次消费的产品数量 private int num; // 所在放置的仓库 private Storage storage; // 构造函数,设置仓库 public Consumer(Storage storage) { this.storage = storage; } // 线程run函数 public void run() { consume(num); } // 调用仓库Storage的生产函数 public void consume(int num) { storage.consume(num); } // get/set方法 public int getNum() { return num; } public void setNum(int num) { this.num = num; } public Storage getStorage() { return storage; } public void setStorage(Storage storage) { this.storage = storage; } }

如何用notify()和wait()实现生产消费者模式处理长尾词查询?

本文共计482个文字,预计阅读时间需要2分钟。

如何用notify()和wait()实现生产消费者模式处理长尾词查询?

javaimport java.util.LinkedList;

/** * 库存类Storage实现缓冲区 */public class Storage { // 库存最大存储量 private final int MAX_SIZE=100; // 库存存储的载体 private LinkedList list=new LinkedList();}

gistfile1.txt

mport java.util.LinkedList; /** * 仓库类Storage实现缓冲区 * * */ public class Storage { // 仓库最大存储量 private final int MAX_SIZE = 100; // 仓库存储的载体 private LinkedList list = new LinkedList(); // 生产num个产品 public void produce(int num) { // 同步代码段 synchronized (list) { // 如果仓库剩余容量不足 while (list.size() + num > MAX_SIZE) { System.out.println(":" + num + "/t:" + list.size() + "/t暂时不能执行生产任务!"); try { // 由于条件不满足,生产阻塞 list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 生产条件满足情况下,生产num个产品 for (int i = 1; i <= num; ++i) { list.add(new Object()); } System.out.println(":" + num + "/t:" + list.size()); list.notifyAll(); } } // 消费num个产品 public void consume(int num) { // 同步代码段 synchronized (list) { // 如果仓库存储量不足 while (list.size() < num) { System.out.println(":" + num + "/t:" + list.size() + "/t暂时不能执行生产任务!"); try { // 由于条件不满足,消费阻塞 list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // 消费条件满足情况下,消费num个产品 for (int i = 1; i <= num; ++i) { list.remove(); } System.out.println(":" + num + "/t:" + list.size()); list.notifyAll(); } } // get/set方法 public LinkedList getList() { return list; } public void setList(LinkedList list) { this.list = list; } public int getMAX_SIZE() { return MAX_SIZE; } } /** * 生产者类Producer继承线程类Thread * * */ public class Producer extends Thread { // 每次生产的产品数量 private int num; // 所在放置的仓库 private Storage storage; // 构造函数,设置仓库 public Producer(Storage storage) { this.storage = storage; } // 线程run函数 public void run() { produce(num); } // 调用仓库Storage的生产函数 public void produce(int num) { storage.produce(num); } // get/set方法 public int getNum() { return num; } public void setNum(int num) { this.num = num; } public Storage getStorage() { return storage; } public void setStorage(Storage storage) { this.storage = storage; } } /** * 消费者类Consumer继承线程类Thread * * */ public class Consumer extends Thread { // 每次消费的产品数量 private int num; // 所在放置的仓库 private Storage storage; // 构造函数,设置仓库 public Consumer(Storage storage) { this.storage = storage; } // 线程run函数 public void run() { consume(num); } // 调用仓库Storage的生产函数 public void consume(int num) { storage.consume(num); } // get/set方法 public int getNum() { return num; } public void setNum(int num) { this.num = num; } public Storage getStorage() { return storage; } public void setStorage(Storage storage) { this.storage = storage; } }

如何用notify()和wait()实现生产消费者模式处理长尾词查询?