1.Thread的setDaemon(true)方法的作用
在主线程关闭后无需手动关闭守护线程,因为会自动关闭,避免了麻烦,Java垃圾回收线程就是一个典型的守护线程,简单粗暴的可以理解为所有为线程服务而不涉及资源的线程都能设置为守护线程。
举个例子:kafka批量发送消息。假设设定的是100条发送一次,如果1个小时内都达不到100条此时应该有另一个线程去检查是不是每隔多少时间去发送一次。保证不满足100条的时候消息能再次发送出去.
如果一个线程有while(true)死循环,如果是非守护线程,正常关闭jvm是关闭不掉的。而守护线程能立马结束.
2.监控系统某些指标的状态变化然后将变化回调给外围系统。
如:外围系统需要实时监控订单状态。
1.写个监听器然后将该监听器注入到涉及订单使用的地方。
a.DataListener接口有个通知方法notify
b.用个抽象类继承改接口,同时该抽象类有个方法implements InitializingBean。初始化的时候初始化好外围调用接口。
c.在抽象类里面用个static方法。初始化一个线程用于监控线程池是否还有线程。
d.从线程池中取个线程去提交真正的回调。
e.真正的实现类去实现抽象类