线程池Executors
2015-11-25 12:56
141 查看
3个线程的线程池提交10个任务
import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class ThreadPoolTest { public static void main(String[] args) { ExecutorService threadPool =Executors.newFixedThreadPool(3); //ExecutorService threadPool =Executors.newCachedThreadPool();//池子里面的线程数动态变化 //ExecutorService threadPool =Executors.newSingleThreadExecutor();//单个线程池,线程死了会找个替补,保证线程不会挂掉 for(int i=1;i<=10;i++){ final int k=i; threadPool.execute(new Runnable() { @Override public void run() { for (int j=1;j<=10;j++){ try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" looping of "+j+" for task of "+k); } } }); } System.out.println("All of 1o tasks have committed"); threadPool.shutdown();//线程池必须关闭线程才能停止,任务干完了关闭 //threadPool.shutdownNow();//任务没干完也立即关闭 //定时器,调度线程池,10s后执行 Executors.newScheduledThreadPool(3).schedule(new Runnable() { @Override public void run() { System.out.println("bombing!"); } }, 10, TimeUnit.SECONDS); //4s后开炸,然后每隔2s开炸 Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("bombing!"); } }, 4,2, TimeUnit.SECONDS); //变相绝对定时,无绝对时间定时 System.err.println(new Date().getTime()-System.currentTimeMillis()); } }
相关文章推荐
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- c++线程池实现方法
- c++实现简单的线程池
- 深入java线程池的使用详解
- java中通用的线程池实例代码
- Java编程中线程池的基本概念和使用
- C#线程池操作方法
- C#线程池用法详细介绍
- C++线程池的简单实现方法
- 深入解析C++编程中线程池的使用
- Node.js事件循环(Event Loop)和线程池详解
- Android编程自定义线程池与用法示例
- c++实现简单的线程池
- 支持生产阻塞的Java线程池
- Python实现线程池代码分享
- 在Android线程池里运行代码任务实例
- python实现线程池的方法
- nginx线程池源码分析
- 线程池的理解