我有这段代码......
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
}
的applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
</beans>
代码退出,但JVM永远不会停止。
任何想法为什么它不会停止?
我还尝试了以下新的Main方法,但它一直在运行。
public static void main(String [] args) { ApplicationContext context = new ClassPathXmlApplicationContext(&#34; applicationContext.xml&#34;); ((ConfigurableApplicationContext)上下文).registerShutdownHook(); ((ConfigurableApplicationContext)上下文).stop(); System.out.println(&#34;现在退出......&#34;); }
如果我暂停JVM,它会显示4个线程。
使用TimerThread.run()1
3使用ScheduledThreadPoolExecutor.take()
答案 0 :(得分:1)
ConfigurableApplicationContext
接口(ClassPathXmlApplicationContext
实现)具有close
方法,您需要调用该方法才能使JVM正常关闭。
可以找到更多信息here.