我想停止这个帖子:
Runnable run= ()->{while(true)[...];};
run.run();
但是没有run.stop()
方法。
请建议另一个尽可能短的启动和停止线程的方法或停止此运行的方法...
答案 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)