java线程池
来源:互联网 发布:mac重装后是英文界面 编辑:程序博客网 时间:2024/05/16 14:45
简介
在jdk1.5之前java的多线程方面是很弱的,自jdk1.5开始增加了一个java.util.concurrent包,该包下都是操作多线程的并发库。
线程池的作用
在java中,如果请求到了就为其开启一个线程,频繁开启和销毁一个线程是非常占用资源的,系统开销很大,于是就有了新技术--线程池,在传统的线程中,开启一个线程只能为其分配 一个线程任务,任务运行完了线程也就要死了,线程池能够”循环“运行任务,增加一个线程任务,不再是交给线程去运行,而是交给一个线程池去运行。如果线程池繁忙那就等待。这样可以限制系统中线程的数量。
为什么要使用线程池
1.减少频繁开启和销毁线程,多个工作线程可以重复使用,可以次运行任务。
2.可以限制系统中线程的数量,可以根据系统自身的配置来手动设置线程的数量。避免许多问题。
三种创建线程池的方法
ExecutorService threadPool= Executors.newCachedThreadPool();//创建缓存线程池 threadPool=Executors.newSingleThreadExecutor();//创建单例线程池 threadPool=Executors.newFixedThreadPool(10);//创建固定大小线程池。 for(int i=1;i<=10;i++){ final int task =i; threadPool.execute( new Runnable(){@Overridepublic void run() { for(int i =1;i<=10;i++){ System.out.println(Thread.currentThread().getName()+" is looping of "+i+", task of "+ task); }}});} threadPool.shutdown();//关闭线程池
另外还有个定时器:
//定义器 Executors.newScheduledThreadPool(3).schedule( new Runnable(){@Overridepublic void run() {System.out.println("bombing !");}}, 10, TimeUnit.SECONDS ); Executors.newScheduledThreadPool(3).scheduleAtFixedRate( new Runnable(){@Overridepublic void run() {System.out.println("bombing !");}}, 2, 4, TimeUnit.SECONDS);
0 0
- Java线程:线程池
- java--线程--线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(五):线程池
- Java线程_07_线程池
- Java线程(五):线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(六):线程池
- 数据迁移
- DataGuard配置
- 大熊市中的准确判断与果断离场
- 自己出的题:唐学长的蜜月之旅(数论:欧拉函数)
- Grep命令详解-9个经典使用场景
- java线程池
- Maven项目多模块拆分
- Android APK反编译详解(附图)
- UVA10405 (DP)
- uva 10405(最长公共子序列)
- C#一些小知识
- XCode6中debug app的视图结构
- Win7 64位 下SlikSVN 的安装配置
- Servlet 开发流程和生命周期