为了处理一些高并发的访问,java5提出了线程池的概念。线程池的分类:
1:newCachedThreadPool():缓存型池子,先看看池子中有没有以前建立的线程,如果有,就使用,如果没有就创建一个新的线程加入池中。缓存型池子通常用于执行一些生命周期很短的异步任务。
2:newFixedThreadPool():任意时间点,最多能有固定数目的活动线程存在,此时如果有新的线程建立,只能放在另外的队列中等待,直到当前线程中的某个线程终止被移除池子。FixedTreadPool通常用于一些很稳定很固定的正规并发线程,多用于服务器。
3:ScheduleThreadPool():调度型线程池,这个池子里的线程可以按schedule依次delay执行,或周期执行。
4:SingleThreadExecutor():单例线程,任意时间只能有一个线程!
示例:
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() {
System.out.println(Thread.currentThread().getName()+"===>"+ task);
}
});
}
}
}