扩展线程池-线程执行前、后都可以添加操作
2022-05-20 15:03 通往神之路 阅读(56) 评论(0) 编辑 收藏 举报package net.shopxx; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 扩展线程池 * * @author 八戒乡建 Team * @version 9.0 */ public class ExtThreadPool { public static class MyTask implements Runnable{ public String name; public MyTask(String name){ this.name = name; } @Override public void run() { System.out.println("正在执行"+":Thread ID:"+Thread.currentThread().getId()+",Task Name"+name); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) throws InterruptedException { ThreadPoolExecutor es = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()) { @Override protected void beforeExecute(Thread t, Runnable r){ System.out.println("准备执行:"+((MyTask) r).name); } @Override protected void afterExecute(Runnable r, Throwable t) { System.out.println("执行完成:"+((MyTask) r).name); } @Override protected void terminated() { System.out.println("线程池退出"); } }; for (int i = 0; i < 5; i++) { MyTask task = new MyTask("Task-geym-"+i); es.execute(task); Thread.sleep(1000); } es.shutdown(); } }