Я безуспешно пытаюсь отменить поток, отправленный с этим кодом
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Object> future = executor.submit(()-> {while(true) { System.out.println("Thread"); Thread.yield();} } );
Thread.sleep(3000);
future.cancel(true);
executor.shutdown();
, но поток продолжает работать.Если вместо yield используется sleep, поток действительно отменяется.Например, это отменяет тему:
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Object> future = executor.submit(()-> {while(true) { System.out.println("Thread"); Thread.sleep(1000);} } );
Thread.sleep(3000);
future.cancel(true);
executor.shutdown();
Что происходит?Я что-то упустил в документации?