package ch21concurrent.examples; import java.util.concurrent.*; /** * InterruptBorrowedThread * <p/> * Scheduling an interrupt on a borrowed thread * * @author Brian Goetz and Tim Peierls */ public class TimedRun1 { private static final ScheduledExecutorService cancelExec = Executors.newScheduledThreadPool(1); public static void timedRun(Runnable r, long timeout, TimeUnit unit) { final Thread taskThread = Thread.currentThread(); cancelExec.schedule(new Runnable() { public void run() { taskThread.interrupt(); } }, timeout, unit); r.run(); } }