线程池相信大家都有一定的了解了吧,那你们知道线程池该如何创建吗?又有几种创建方式呢?下面一起跟小编来看看吧。
首先我们得知道,在Java语言中,java会通过Executors来提供四种线程池创建方式,分别是:
一、newCachedThreadPool
创建了一个可缓存线程池,假如,线程池长度超过处理需要,它就可以够灵活回收空闲线程,假如无可回收,那么就新建线程。
public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(index); } }); } }
二、newFixedThreadPool
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
public static void main(String[] args) { ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); for (int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
三、newScheduledThreadPool
创建一个定长线程池,支持定时及周期性任务执行。
public static void main(String[] args) { ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); for (int i = 0; i < 10; i++) { scheduledThreadPool.schedule(new Runnable() { public void run() { System.out.println("delay 3 seconds"); } }, 3, TimeUnit.SECONDS); } }
四、newSingleThreadExecutor
创建一个单线程化的线程池,这个线程池只会用唯一的工作线程来执行任务,来保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
public static void main(String[] args) { ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); for (int i = 0; i < 10; i++) { final int index = i; singleThreadExecutor.execute(new Runnable() { public void run() { /* System.out.println(index);*/ try { System.out.println(index); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } }
以上就是关于线程池实现方式的所有内容了,线程池是java中基础之一,但也是非常重要的,如果还想要了解更多与之相关的java常见问答知识,请一直关注我们网站吧。
推荐阅读: