您的位置:首页 > 编程语言 > Java开发

java.util.concurrent包中线程池Executors的使用

2017-02-11 15:50 507 查看
线程池的概念与Executors类的使用

(1)创建固定大小的线程池–当有多个任务时,会先按照线程池中的数据执行任务,其他任务处于等待过程中,等执行完这批任务后再执行下批任务。

(2)创建缓存线程池,会根据任务的多少来创建线程

(3)创建单一线程池(该线程死掉后,系统会自动创建另一个线程)

package cn.threadPool;

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();

for(int n=0;n<10;n++){
final int task=n;
// 往线程池中放10个任务,但线程池中只有三个线程,会三个任务执行完之后再执行三个。
threadPool.execute(new Runnable(){
@Override
public void run() {
for(int i=0;i<10;i++){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" 循环到"+i+" ,loop "+task);
}

}

});
}
System.out.println("任务结束");
//threadPool.shutdown();//线程执行完所有任务时,会关掉程序
/**
* 用线程池启动定时任务
*
*/
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
System.out.println("booming");
}

}, 2, 2, TimeUnit.SECONDS);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  线程池 线程