import java.util.concurrent.*; /**
* ThreadPoolExecutor扩展
*/
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("正在执行 Id:"+Thread.currentThread().getId()+",Name:"+Thread.currentThread().getName());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException{
ExecutorService executor = new ThreadPoolExecutor(5, 5, 0L,
TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>()){
@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-"+i);
executor.execute(task);
Thread.sleep(10);
}
executor.shutdown();//关闭线程池,它会等待所有任务执行完成后,再关闭线程池
}
//准备执行:TASK-0
//正在执行 Id:9,Name:pool-1-thread-1
//准备执行:TASK-1
//正在执行 Id:10,Name:pool-1-thread-2
//准备执行:TASK-2
//正在执行 Id:11,Name:pool-1-thread-3
//准备执行:TASK-3
//正在执行 Id:12,Name:pool-1-thread-4
//准备执行:TASK-4
//正在执行 Id:13,Name:pool-1-thread-5
//执行完成:TASK-0
//执行完成:TASK-1
//执行完成:TASK-2
//执行完成:TASK-3
//执行完成:TASK-4
//线程池退出
}

最新文章

  1. heart beat/心跳包
  2. sql 通过表名获取所有列名
  3. IIS7 应用程序池设置成 经典 v2.0
  4. Validate Binary Search Tree [LeetCode]
  5. 【转载】perl接受传递参数的方法
  6. 关于c++字符串的while(*temp++)
  7. oracle 随Linux系统启动自启动设置
  8. Swift - 告警框(UIAlertView)的用法
  9. pdftk的使用介绍
  10. JAVA基础--继承中的构造方法
  11. c#套料程序设计
  12. ●CodeForces 480E Parking Lot
  13. python 生成 1900-2100 的二十四节气文件
  14. QT—QTextEdit控件显示日志
  15. Python退火算法在高次方程的应用
  16. swagger支持中英文
  17. docker 1 (ubuntu docker install)
  18. 过滤富文本编辑器中的html元素和其他元素
  19. div与 css--绝对定位和相对定位
  20. Git commit/pull/push的操作步骤

热门文章

  1. hibernate插入数据测试无异常,但数据库没有数据
  2. 【HDOJ6651】Final Exam(贪心)
  3. 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口
  4. python-zx笔记9-单元测试
  5. centos 无界面安装selenium+chrome+chromedirver的设置
  6. SSL异常javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
  7. python内置装饰器
  8. Python中import的使用方法
  9. Linux 两台服务器之间传递文件
  10. STM32 实现内部Flash的读写(HAL库版)