Я новичок в параллельном пакете Java и хочу попробовать ExecutorService контролировать время выполнения потока.Используйте ExecutorService для управления временем выполнения потока
Итак, для продолжения потока MyThread, я хочу использовать класс ExecutorService и Future, чтобы остановить его через 2 секунды.
public class MyThread extends Thread {
public static int count = 0;
@Override
public void run() {
while (true) {
System.out.println(count++);
}
}
}
public static void main(String[] args) throws IOException, InterruptedException {
ExecutorService executorService = Executors.newFixedThreadPool(1);
MyThread thread = new MyThread();
FutureTask<String> futureTask = new FutureTask<String>(thread, "success");
try {
executorService.submit(futureTask).get(2, TimeUnit.SECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
System.out.println("timeout");
e.printStackTrace();
executorService.shutdownNow();
}
}
Тем не менее, поток по-прежнему сохраняет номера печати через 2 секунды. Как я могу контролировать поток без изменения самого класса MyThread?
Вы написали бесконечный цикл для печати чисел. Код в этом классе должен быть изменен. –
Я использую бесконечный цикл, чтобы увидеть, может ли ExecutorService остановить поток. –