Java 使用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(); 现在我有一个可运行的线程要在我的程序中

在使用Executor服务一段时间后,我偶然发现了这篇关于杀死线程的文章:

这是文章中提到的代码:

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”中找到它。

也许您应该看看这个答案。。。