Java 使用Executor&;一段时间后一起运行以终止线程
在使用Executor服务一段时间后,我偶然发现了这篇关于杀死线程的文章: 这是文章中提到的代码:Java 使用Executor&;一段时间后一起运行以终止线程,java,multithreading,runnable,executorservice,Java,Multithreading,Runnable,Executorservice,在使用Executor服务一段时间后,我偶然发现了这篇关于杀死线程的文章: 这是文章中提到的代码: ExecutorService executor = Executors.newSingleThreadExecutor(); executor.invokeAll(Arrays.asList(new Task()), 10, TimeUnit.MINUTES); // Timeout of 10 minutes. executor.shutdown(); 现在我有一个可运行的线程要在我的程序中
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.invokeAll(Arrays.asList(new Task()), 10, TimeUnit.MINUTES); // Timeout of 10 minutes.
executor.shutdown();
现在我有一个可运行的线程要在我的程序中执行。如何在使用上述代码一段时间后杀死这个线程
下面是我用于创建线程的代码的一部分:
public static List<Thread> thread_starter(List<Thread> threads,String filename)
{ String text=read_from_temp(filename);
Runnable task = new MyRunnable(text);
Thread worker = new Thread(task);
worker.start();
// Remember the thread for later usage
threads.add(worker);
return threads;
}
public class MyRunnable implements Runnable {
MyRunnable(String text)
{
this.text=text;
}
@Override
public void run() {
/* other computation*/
}
公共静态列表线程\u启动器(列表线程,字符串文件名)
{String text=read_from_temp(文件名);
Runnable任务=新的MyRunnable(文本);
线程工作者=新线程(任务);
worker.start();
//记住线程以便以后使用
线程。添加(worker);
返回线程;
}
公共类MyRunnable实现Runnable{
MyRunnable(字符串文本)
{
this.text=文本;
}
@凌驾
公开募捐{
/*其他计算*/
}
我通过调用thread_start()函数来创建多个线程
任何人都可以帮助我将Executor服务与它结合起来。我尝试了很多,但找不到任何解决办法!在java中,您不能直接杀死正在运行的线程。如果您想杀死正在运行的线程,您需要在任务中设置一个running标志,在thread task中检查它,并在外部设置它。例如:
MyRunnable task = ....;
......
task.running = false; //stop one task
public class MyRunnable implements Runnable {
public boolean running = true;
public void run() {
while(running){
.....
}
}
您提到的“ExecutorService”是单线程的“ExecutorService”,它会一个接一个地执行任务,超时时它所做的只是等待任务完成并计算/比较每个任务的超时时间。您可以在java的源代码“AbstractExecutorService.java”中找到它。也许您应该看看这个答案。。。