在前面的文章中介绍过 观察者模式 及 并发编程的基础知识,为了让大家更好的了解 故而特意写了这篇番外..
概述
在Java多线程下,我们需要知道当前执行线程的状态是什么比如 , , 等状态的通知,而且不仅仅是更新当前页面。
观察者模式:是一种使用率极高的模式,用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。
观察者模式传送门:http://blog.battcn.com/2017/12/11/java/design-pattern/observer-pattern/#more
案例
假设开发一个 ,由于数据过大需要利用多线程并行化来提升抓取的效率,并且在抓取过程中要记录执行线程的运行状态以便追溯问题原因
UML图如下
1.定义 对象,实现JDK自带的 接口,然后在需要实现的 方法中记录下每个线程执行的状态信息
2.定义 的对象,该对象需要继承 类,以及实现 接口,这里 的实现非常简单,执行每一步骤操作时都进行了通知,通知 消息发生变更了
3.创建测试工程
4.运行结果,通过运行日志可以发现,启动三个线程后同时执行抓取操作,但是 线程在数据处理时发生了异常,在 处也成功收到通知的内容,然后对信息进行了输出操作。在实际过程中我们可以为异常进行补偿操作
总结
本文,简单讲述了多线程环境下如何利用观察者模式进行线程状态监听,也是对前面所讲的基础进行巩固,在学习的过程中,既要知其然也要知其所以然。这样才能更好地驾驭它,更好地去理解和使用,也能更好地帮助我们 。
- 说点什么
全文代码:https://gitee.com/battcn/battcn-concurent/tree/master/Chapter1-1/battcn-thread/src/main/java/com/battcn/chapter14
微信公众号: (欢迎调戏)
领取专属 10元无门槛券
私享最新 技术干货