线程池
来源:互联网 发布:诺基亚5310xm软件 编辑:程序博客网 时间:2024/05/17 21:41
java.util.concurrent.Executors 可以创建三种类型的线程池建立一个线程池,把要执行的任务丢到线程池中。package traditional; 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 = 0; i<10; i++){ final int task = i; threadPool.execute(new Runnable(){ @Override public void run() { for(int j = 0 ; j<10 ; j++){ try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " is loop of " + j+ " for task " + task); } } }); } System.out.println("all of 10 tasks have committed!");// threadPool.shutdownNow(); //**********用线程池启动定时器: /** * 10s后执行的任务 */ Executors.newScheduledThreadPool(3).schedule( new Runnable(){ @Override public void run() { System.out.println("bombing!"); } }, 10, TimeUnit.SECONDS ); /** * 程序开始6s后爆炸,然后每隔2s爆炸 */ Executors.newScheduledThreadPool(3).scheduleAtFixedRate( new Runnable(){ @Override public void run() { System.out.println("bombing"); } }, 6, 2, TimeUnit.SECONDS); }}
建立一个线程池,把要执行的任务丢到线程池中。
package traditional; 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 = 0; i<10; i++){ final int task = i; threadPool.execute(new Runnable(){ @Override public void run() { for(int j = 0 ; j<10 ; j++){ try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " is loop of " + j+ " for task " + task); } } }); } System.out.println("all of 10 tasks have committed!");// threadPool.shutdownNow(); //**********用线程池启动定时器: /** * 10s后执行的任务 */ Executors.newScheduledThreadPool(3).schedule( new Runnable(){ @Override public void run() { System.out.println("bombing!"); } }, 10, TimeUnit.SECONDS ); /** * 程序开始6s后爆炸,然后每隔2s爆炸 */ Executors.newScheduledThreadPool(3).scheduleAtFixedRate( new Runnable(){ @Override public void run() { System.out.println("bombing"); } }, 6, 2, TimeUnit.SECONDS); }}
阅读全文
0 0
- 线程与线程池
- 线程池 线程优先级
- Executor线程,线程池
- 线程、多线程、线程池
- IOS-线程、线程池
- Java线程:线程池
- 线程和线程池
- 线程、多线程、线程池
- 线程、多线程、线程池
- 线程(六)线程池
- ExecutorService(线程池)+线程
- 线程和线程池
- 线程&线程池 简略
- 线程和线程池
- 线程池 线程锁
- 线程、线程池总结
- 线程与线程池
- 线程、锁、线程池
- Java web之一
- Android 高效调试神器 JRebel
- 判断101-200之间有多少个素数,并输出所有素数。
- hololens开发手记——Unity之语音输入
- JAVA中的static关键字
- 线程池
- JQuery 元素位置
- Service流程
- 在Node.js中实现文件复制的方法和实例
- contenteditable="true"的div事件处理
- 经典Prim算法题目及代码
- 机器学习深度学习基础笔记(4)——Backpropagation算法实现
- 安卓中MVC模式的深度思索和实践(三)
- linux环境高级编程之fork、getpid、getppid函数