Online Java Compiler By
JavaTpoint.com
import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; public class ThreadPoolExecuteawaitTerminationExample2 { public static void main(String[] args) throws InterruptedException { //Creating a thread pool ThreadPoolExecutor obj = new ThreadPoolExecuteawaitTerminationExample2 ().new MyThreadExecutor(2, 3, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); obj.execute(() -> { System.out.println("In Runnable!"); try { obj.awaitTermination(10, TimeUnit.MILLISECONDS); } catch (InterruptedException ex) { Logger.getLogger(ThreadPoolExecuteawaitTerminationExample2.class.getName()).log(Level.SEVERE, null, ex); } }); obj.shutdown(); } class MyThreadExecutor extends ThreadPoolExecutor { public MyThreadExecutor(int PoolSize, int maxPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue
workQueue) throws InterruptedException { super(PoolSize, maxPoolSize, keepAliveTime, unit, workQueue); if (this.allowsCoreThreadTimeOut()) this.awaitTermination(5, TimeUnit.SECONDS); else System.out.println("allowCoreThreadTimeOut is already true"); } } }
Output