Java Springbean在自己的线程中运行

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的内容,谷

在我的web应用程序中,我试图使用JavaSDK7 WatchService创建一个目录轮询bean。我想要实现的是在它自己的线程中运行这个bean,这样它就不会阻塞应用程序。比如:

  <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();
        //
    }
}