创建线程池的几种方式
作者:bin创建一个可缓存线程池,应用中存在的线程数可以无限大
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
//1.创建一个可缓存线程池,应用中存在的线程数可以无限大 ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(); //2.描述:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 //ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(2); for(int i=0;i<10;i++) { final int index=i; newCachedThreadPool.execute(new Runnable() { @Override public void run() { System.out.println("nihao" + index); } }); }
创建一个定长线程池,支持定时及周期性任务执行。
//定时调度线程 ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(2); for(int i=0;i<10;i++) { final int index=i; //延迟三秒执行 newScheduledThreadPool.schedule(new Runnable() { @Override public void run() { System.out.println("nihao" + index); } }, 3, TimeUnit.SECONDS); }
创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
/** * 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务, * 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。 */ ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor(); for(int i=0;i<10;i++) { final int index=i; newSingleThreadExecutor.execute(new Runnable() { @Override public void run() { System.out.println("nihao" + index); } }); }