如何停止java 8 lambda-runnable-thread

时间:2014-10-06 20:33:01

标签: java multithreading runnable

我想停止这个帖子:

Runnable run= ()->{while(true)[...];};
run.run();

但是没有run.stop()方法。

请建议另一个尽可能短的启动和停止线程的方法或停止此运行的方法...

3 个答案:

答案 0 :(得分:7)

Runnable.run()不创建线程。您正在调用当前线程中的run()方法。要创建一个线程,您需要这样做:创建并启动一个线程:

Thread t = new Thread(run);
t.start();

稍后您可以调用

t.interrupt();

请阅读Thread.interrupt()上的javadocs,了解如何将run()方法构建为可中断的。

答案 1 :(得分:1)

您通常做的最简单的事情是将一个volatile布尔字段添加到由另一个线程设置的runnable中。

在您的情况下,您可能使用AtomicBoolean而不是volatile字段并在闭包中捕获它。创建闭包后,您可以使用此AtomicBoolean来停止。

答案 2 :(得分:1)

为了停止一个线程,首先要创建一个这样的线程

Thread thread = new Thread(run);

并且为了启动线程 致电

thread.start(); 

start方法将调用run方法,但如果直接调用run()方法,则不会创建新线程,代码将在现有的线程。要停止该方法,您可以使用interrupt