From 5bb7c38c53270aa7ca5ad8e90f3d736020caf0fa Mon Sep 17 00:00:00 2001 From: "In-on W." <60760464+inonwir@users.noreply.github.com> Date: Wed, 25 Jun 2025 14:41:18 +0700 Subject: [PATCH] Update CallableTest.java Improve CallableTest with Timeout Handling and Thread Interruption --- .../main/java/uk/bl/wa/tika/CallableTest.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/digipres-tika/src/main/java/uk/bl/wa/tika/CallableTest.java b/digipres-tika/src/main/java/uk/bl/wa/tika/CallableTest.java index 43ea5aac..d8db5f3e 100644 --- a/digipres-tika/src/main/java/uk/bl/wa/tika/CallableTest.java +++ b/digipres-tika/src/main/java/uk/bl/wa/tika/CallableTest.java @@ -33,8 +33,9 @@ import java.util.concurrent.TimeoutException; /** - * @author Andrew Jackson - * + * Demonstrates timeout-safe task execution with cooperative interruption. + * + * @author Andrew Jackson */ public class CallableTest { public static void main(String[] args) throws Exception { @@ -43,20 +44,23 @@ public static void main(String[] args) throws Exception { try { System.out.println("Started.."); - System.out.println(future.get(3, TimeUnit.SECONDS)); + System.out.println(future.get(3, TimeUnit.SECONDS)); // Wait up to 3s System.out.println("Finished!"); } catch (TimeoutException e) { - System.out.println("Terminated!"); + System.out.println("Terminated due to timeout!"); + future.cancel(true); // Cooperative cancel on timeout + } finally { + executor.shutdownNow(); } - - executor.shutdownNow(); } } class Task implements Callable { @Override public String call() throws Exception { - Thread.sleep(4000); // Just to demo a long running task of 4 seconds. - return "Ready!"; + while (!Thread.currentThread().isInterrupted()) { + Thread.sleep(100); // Simulate ongoing work + } + return "Cancelled!"; } }