Executors 线程池
来源:互联网 发布:普通网络作家收入 编辑:程序博客网 时间:2024/05/23 20:14
--Executors 线程池的顶级接口,实际完成线程池的接口是:ExecutorService;
--为什么使用线程池?
|-使用线程池的目的是为了解决每次创建和销毁线程带来的资源和时间的浪费,与其如此,不如事先先创建好一些线程,放在池子里,以后需要的时候,从池里拿来一个Thread,来处理业务;方便...
--如何使用?
|-Executors提供了几个静态工场,用来创建固定形式的线程池供我们使用;
|-1 Executors.newSingleThreadExecutor() 创建 单线程 线程池;-->相当于 单线程 了
|-2 Executors.newFixedThreadPool(5) 创建 固定个数的 线程池;-->每次执行一个job,调用一个Thread,有固定线程数限制;
|-3 Executors.newCachedThreadPool() 创建 可重用 固定个数 线程池;-->自动的根据需求来合理创建和销毁线程;
上述3中类型线程池的Demo:
package com.bdc;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org.junit.Test;public class ThreadPool {@Testpublic void test1(){/** * 创建 单线程 线程池 */ExecutorService pool = Executors.newSingleThreadExecutor();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();Thread t6 = new MyThread();Thread t7 = new MyThread();Thread t8 = new MyThread();Thread t9 = new MyThread();Thread t10 = new MyThread();Thread t11 = new MyThread();pool.execute(t1);pool.execute(t2);pool.execute(t3);pool.execute(t4);pool.execute(t5);pool.execute(t6);pool.execute(t7);pool.execute(t8);pool.execute(t9);pool.execute(t10);pool.execute(t11);//关闭 线程池pool.shutdown();}@Testpublic void test2(){/** * 创建 固定个数的 线程池 */ExecutorService pool = Executors.newFixedThreadPool(5);Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();Thread t6 = new MyThread();Thread t7 = new MyThread();Thread t8 = new MyThread();Thread t9 = new MyThread();Thread t10 = new MyThread();Thread t11 = new MyThread();pool.execute(t1);pool.execute(t2);pool.execute(t3);pool.execute(t4);pool.execute(t5);pool.execute(t6);pool.execute(t7);pool.execute(t8);pool.execute(t9);pool.execute(t10);pool.execute(t11);//关闭 线程池pool.shutdown();}@Testpublic void test3(){/** * 创建 可重用 固定个数 线程池 */ExecutorService pool = Executors.newCachedThreadPool();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();Thread t6 = new MyThread();Thread t7 = new MyThread();Thread t8 = new MyThread();Thread t9 = new MyThread();Thread t10 = new MyThread();Thread t11 = new MyThread();pool.execute(t1);pool.execute(t2);pool.execute(t3);pool.execute(t4);pool.execute(t5);pool.execute(t6);pool.execute(t7);pool.execute(t8);pool.execute(t9);pool.execute(t10);pool.execute(t11);//关闭 线程池pool.shutdown();}}class MyThread extends Thread{@Overridepublic void run(){System.out.println(Thread.currentThread().getId()+" "+Thread.currentThread().getName()+"正在执行...");}}
0 0
- Java Executors(线程池)
- java Executors(线程池)
- Java Executors(线程池)
- Executors 和线程池
- Java Executors(线程池)
- Executors 与线程池
- Executors线程池--java
- 线程池 Executors 入门
- Java Executors(线程池)
- java Executors线程池
- Java线程池Executors
- 线程池 Executors
- Java Executors(线程池)
- Executors 线程池
- Java Executors(线程池)
- 线程池 Executors 入门
- Java Executors(线程池)
- 线程池Executors探究
- SegmentFault 巨献 1024 程序员游戏「红岸的呼唤」第四天任务攻略
- R语言中的SVM
- Android ActionBar应用实战,高仿微信主界面的设计
- 加和一定的随机序列生成方法
- Axure 动态面板实现弹出框效果
- Executors 线程池
- CUP对内存管理精华总(vector机制)
- Windows位图和调色板
- uva--10160+dfs+剪枝
- 模拟电子技术100问
- 已知坐标求多边形面积
- android 学习教程六之----四大组件之一——BroadcastReciever
- R语言线性回归预测网页流量
- Intellij Idea设置自定义调试签名