在Java中,可以使用ExecutorService来控制线程的超时时间并自动关闭线程。下面是一个示例代码:
import java.util.concurrent.*; public class ThreadTimeoutExample { public static void main(String[] args) { ExecutorService executor = Executors.newSingleThreadExecutor(); try { Futurefuture = executor.submit(new Callable () { @Override public String call() throws Exception { // 在这里执行耗时操作 Thread.sleep(5000); return "Task completed"; } }); try { String result = future.get(3, TimeUnit.SECONDS); // 设置超时时间为3秒 System.out.println(result); } catch (TimeoutException e) { System.out.println("Task timed out and will be cancelled"); future.cancel(true); // 取消任务 } } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } finally { executor.shutdown(); } } }
在上面的示例中,我们使用ExecutorService创建了一个单线程池,并提交了一个耗时5秒的任务。通过Future的get方法设置超时时间为3秒,如果任务在规定时间内未完成,则会抛出TimeoutException并取消任务。最后记得调用ExecutorService的shutdown方法关闭线程池。