Java 是春天';s Lifecycle.stop()应该是同步的还是异步的?

Java 是春天';s Lifecycle.stop()应该是同步的还是异步的?,java,spring,Java,Spring,Spring文档中不清楚Lifecycle.stop()是否应该同步或异步执行。有人知道吗?看看代码,stop()方法似乎在很多地方都有实现,但我认为它通常是同步的。一个线索是AbstractApplicationContext中的stop()的实现是: public void stop() { getLifecycleProcessor().stop(); publishEvent(new ContextStoppedEvent(this)); } 如果上下文仍在停止过程中,

Spring文档中不清楚
Lifecycle.stop()
是否应该同步或异步执行。有人知道吗?

看看代码,
stop()
方法似乎在很多地方都有实现,但我认为它通常是同步的。一个线索是AbstractApplicationContext中的
stop()
的实现是:

public void stop() {
    getLifecycleProcessor().stop();
    publishEvent(new ContextStoppedEvent(this));
}
如果上下文仍在停止过程中,他们不会发布“上下文已停止”事件

您可以通过注册事件侦听器并等待
contextstoppedeEvent
来回避此问题。但是,即使这样也不能保护您不受某些损坏的类的影响,这些类忽略了发布事件,或者在实例完全停止之前发布了事件


另一个选择是在春季论坛上问这个问题。。。甚至对相关文档/javadocs提出问题。

事件分发机制是可插入的。默认情况下,它是同步的,但是如果您愿意,您可以指示上下文以异步甚至多线程的方式分发生命周期事件

所以它没有被记录下来,因为它没有定义,由你决定