为了处理一些高并发的访问,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); } }); } } }