如何通过jmx停止ThreadPoolTask​​Executor中的活动线程

时间:2013-10-07 07:36:32

标签: java spring task

在我的应用中,我正在使用ThreadPoolTaskExecutor。此执行程序包含返回activeThread getActiveCount的方法。有没有选项如何停止这个活动线程?我不想关闭这个执行器我只想停止一些无限过程,如

while(true){
}

PS:我只能访问此执行程序,因为我想通过jmx

停止此线程

在我的应用程序中,我添加了这样的新主题:

                taskExecutor.execute(new Runnable() {

                    @Override
                    public void run() {
                        doSomething()
                    }
                });

2 个答案:

答案 0 :(得分:0)

您需要快速检查一下如何添加任务。

只要您使用submit来添加任务,就可以使用返回的Future任务(从此调用中)取消特定任务。但是,如果使用执行,则表示您正在重新控制任务。

答案 1 :(得分:0)

试试这个:

public void run() {
    while (true) {
        doSomething();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            //Very important.
            Thread.currentThread().interrupt(); 
            break;
        }
    }
    System.out.println("Shutting down thread");
}

这是一篇很好的文章javaspecialists.co.za/archive/Issue056.html