当前位置: 首页 > wzjs >正文

重庆免费网站推广软件山东裕达建设工程咨询有限公司网站

重庆免费网站推广软件,山东裕达建设工程咨询有限公司网站,用织梦系统做网站,用别的域名给网站做竞价1. 经典生产者-消费者模式 核心思想:生产者生产数据放入缓冲区,消费者从缓冲区取数据处理,二者通过阻塞队列(如 BlockingQueue)协调。适用场景:消息队列、任务调度、数据处理管道。实现方式: 使…

1. 经典生产者-消费者模式

  • 核心思想:生产者生产数据放入缓冲区,消费者从缓冲区取数据处理,二者通过阻塞队列(如 BlockingQueue)协调。
  • 适用场景:消息队列、任务调度、数据处理管道。
  • 实现方式
    • 使用 BlockingQueue(如 LinkedBlockingQueue
    • 使用 wait/notify
    • 使用 LockCondition

示例:

class Producer implements Runnable {private BlockingQueue<Integer> queue;public Producer(BlockingQueue<Integer> queue) { this.queue = queue; }public void run() {try {while (true) {int item = new Random().nextInt(100);queue.put(item);  // 阻塞式放入System.out.println("生产:" + item);Thread.sleep(100);}} catch (InterruptedException e) { Thread.currentThread().interrupt(); }}
}class Consumer implements Runnable {private BlockingQueue<Integer> queue;public Consumer(BlockingQueue<Integer> queue) { this.queue = queue; }public void run() {try {while (true) {int item = queue.take();  // 阻塞式获取System.out.println("消费:" + item);Thread.sleep(200);}} catch (InterruptedException e) { Thread.currentThread().interrupt(); }}
}public class ProducerConsumerExample {public static void main(String[] args) {BlockingQueue<Integer> queue = new LinkedBlockingQueue<>(10);new Thread(new Producer(queue)).start();new Thread(new Consumer(queue)).start();}
}

2. 观察者模式(Observer Pattern)

  • 核心思想:一个对象(Subject)发生变化时,通知多个观察者(Observer)。
  • 适用场景:事件驱动系统(如 GUI 事件监听、消息通知)。
  • 实现方式
    • java.util.Observer(Java 9 之后被弃用)
    • java.beans.PropertyChangeListener
    • 自定义回调函数模式

示例:

interface Observer {void update(String message);
}class ConcreteObserver implements Observer {private String name;public ConcreteObserver(String name) { this.name = name; }public void update(String message) {System.out.println(name + " 收到消息: " + message);}
}class Subject {private List<Observer> observers = new ArrayList<>();public void addObserver(Observer observer) { observers.add(observer); }public void notifyObservers(String message) {for (Observer observer : observers) {observer.update(message);}}
}public class ObserverExample {public static void main(String[] args) {Subject subject = new Subject();Observer o1 = new ConcreteObserver("A");Observer o2 = new ConcreteObserver("B");subject.addObserver(o1);subject.addObserver(o2);subject.notifyObservers("新任务来了");}
}

3. 生产者-消费者-缓冲池模式(Producer-Consumer-Pool)

  • 核心思想:在生产者和消费者之间加入一个线程池(如 ThreadPoolExecutor),用于处理任务,而不是直接由消费者消费。
  • 适用场景:高吞吐任务处理,如 Web 服务器、日志处理。
  • 实现方式
    • ExecutorService 线程池
    • BlockingQueue

示例:

public class ThreadPoolProducerConsumer {public static void main(String[] args) {ExecutorService executor = Executors.newFixedThreadPool(3);BlockingQueue<Integer> queue = new LinkedBlockingQueue<>(10);Runnable producer = () -> {try {while (true) {int item = new Random().nextInt(100);queue.put(item);System.out.println("生产:" + item);Thread.sleep(100);}} catch (InterruptedException e) { Thread.currentThread().interrupt(); }};Runnable consumer = () -> {try {while (true) {int item = queue.take();System.out.println("消费:" + item);Thread.sleep(200);}} catch (InterruptedException e) { Thread.currentThread().interrupt(); }};executor.execute(producer);executor.execute(consumer);executor.shutdown();}
}

4. 事件驱动架构(EDA - Event-Driven Architecture)

  • 核心思想:生产者触发事件,消费者以异步方式处理事件。
  • 适用场景:微服务架构、消息队列(Kafka、RabbitMQ)。
  • 实现方式
    • CompletableFuture
    • EventBus
    • 消息队列(如 Kafka)

示例(CompletableFuture):

import java.util.concurrent.*;public class EventDrivenExample {public static void main(String[] args) {CompletableFuture.runAsync(() -> {try {System.out.println("生产事件");Thread.sleep(1000);} catch (InterruptedException e) { e.printStackTrace(); }}).thenRun(() -> System.out.println("消费事件"));}
}

5. 责任链模式(Chain of Responsibility Pattern)

  • 核心思想:多个处理者形成链条,依次处理请求,直到找到合适的处理者。
  • 适用场景:日志处理、权限控制、请求过滤。
  • 实现方式
    • 设计链式调用模式
    • FilterChain 机制(如 Servlet 过滤器)

示例:

abstract class Handler {protected Handler next;public void setNext(Handler next) { this.next = next; }public abstract void handleRequest(int request);
}class ConcreteHandlerA extends Handler {public void handleRequest(int request) {if (request < 10) {System.out.println("A 处理请求: " + request);} else if (next != null) {next.handleRequest(request);}}
}class ConcreteHandlerB extends Handler {public void handleRequest(int request) {System.out.println("B 处理请求: " + request);}
}public class ChainExample {public static void main(String[] args) {Handler handlerA = new ConcreteHandlerA();Handler handlerB = new ConcreteHandlerB();handlerA.setNext(handlerB);handlerA.handleRequest(5);handlerA.handleRequest(15);}
}

总结

模式适用场景特点
生产者-消费者模式任务队列多线程并发控制
观察者模式事件通知低耦合,异步
生产者-消费者-缓冲池高并发任务处理使用线程池优化资源
事件驱动架构(EDA)微服务,消息驱动异步,解耦
责任链模式过滤器,权限控制链式调用

如果你是做 高并发系统、微服务、消息队列,可以考虑 事件驱动生产者-消费者模式。如果是 GUI 事件、回调机制观察者模式 更适用。

 

http://www.dtcms.com/wzjs/598066.html

相关文章:

  • 宜选网的网站是什么做的添加图标wordpress
  • 百色网站建设公司网站需要的栏目和内容
  • 淘宝客做的比较好的网站临沂做百度网站软件公司
  • 合肥中小型企业网站建设方案模板融资
  • 网上服装商城网站建设方案策划书做网站用什么软件编辑
  • 网站空间商拿不回数据无锡建设局网站一号通
  • 中国建设银行网站首页签约一个公司做多个网站是好还是坏
  • 可以做软件的网站有哪些内容吗太原贴吧
  • 佛山外贸网站制作石家庄求做网站
  • 平顺网站建设wordpress json 时间
  • 以前的网站忘了怎么办啊机关单位网站建设申请
  • 国外网站做acm题目比较好重庆seo管理平台
  • 环保公司网站架构怎么做外贸网站优化怎么做
  • 这是我自己做的网站吗腾讯企业邮箱登录登录入口
  • 建设河南分行网站全网营销系统怎么样
  • 本地建站软件有哪些WordPress安装插件要FTP
  • 流放之路做长老环的网站html5集团网站
  • 门户网站建设的平台商贸有限公司名称大全
  • 外包做的网站 需要要源代码吗apple 网站模板
  • 注册网站费用wordpress产品演示
  • 建设单位应该关注的网站云谷 网站建设
  • 域名注册以后如何建站seo优化方案项目策划书
  • 天门网站定制制作俄语网站
  • 济南好的seo网站搭建排名优化
  • 新开传奇网站999福建福清市住房和建设局网站
  • flash网站全屏代码wordpress 页面内链
  • 网站页面设计知识邯郸有建网站吗哪个公司好些
  • 网站搭建素材企业门户网站制作价格怎么算
  • 站长之家查询网站外贸网站建设工作室
  • 正规做网站济南网站优化小黑