Java Springbean在自己的线程中运行
在我的web应用程序中,我试图使用JavaSDK7 WatchService创建一个目录轮询bean。我想要实现的是在它自己的线程中运行这个bean,这样它就不会阻塞应用程序。比如:Java Springbean在自己的线程中运行,java,multithreading,spring,Java,Multithreading,Spring,在我的web应用程序中,我试图使用JavaSDK7 WatchService创建一个目录轮询bean。我想要实现的是在它自己的线程中运行这个bean,这样它就不会阻塞应用程序。比如: <bean id="directoryPoller" class="org...MyDirectoryPoller" scope="thread"/> 我不熟悉Java 7的WatchService,但您可以使用Springs来实现这一点。下面是一些类似Spring Scheduled的内容,谷
<bean id="directoryPoller" class="org...MyDirectoryPoller" scope="thread"/>
我不熟悉Java 7的WatchService,但您可以使用Springs来实现这一点。下面是一些类似Spring Scheduled的内容,谷歌搜索可能会发现更多加载。恐怕您必须使用Spring手动创建此线程:
<bean id="pollThread" class="java.lang.Thread" init-method="start" destroy-method="interrupt">
<constructor-arg ref="watchServiceRunnableWrapper"/>
</bean>
<bean id="watchServiceRunnableWrapper" class="WatchServiceRunnableWrapper">
<constructor-arg ref="watchService"/>
</bean>
<bean id="WatchService" class="java.nio.file.WatchService" destroy-method="close"/>
我还没有测试过它,但它或多或少应该可以正常工作并正常关机 其实这并不是关于WatchService,而是关于创建一个新线程——您能解释一下在您的示例中新线程是在哪里创建的吗?谢谢啊,好吧,我可以看到它是通过实现Runnable实现的。谢谢,这正是我想要的!
public class WatchServiceRunnableWrapper implements Runnable {
private WatchService WatchService;
public WatchServiceRunnableWrapper(WatchService watchService) {
this.watchService = watchService;
}
public void run() {
watchService.poll();
//
}
}