首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java线程池(二):聊聊newFixedThreadPool(1)和newSingleThreadExecutor()的区别

既然newFixedThreadPool(1)也能保证创建只有一个线程运行的线程池,那么为什么还需要一个newSingleThreadExecutor()方法呢?带着这个问题我们来详细分析。...OrderTest { public static void main(String[] args) throws Exception{ ExecutorService es1 = Executors.newFixedThreadPool...3.本质区别 那么我们再看看这两个方法的源码: public static ExecutorService newFixedThreadPool(int nThreads) { return new...因此我们可以通过强转来实现,看如下代码: public static void main(String[] args) { ExecutorService es1 = Executors.newFixedThreadPool...分析了newFixedThreadPool(1)和newSingleThreadExecutor()的区别。实际上这两种设计是有原因的。而且对于后者这种将核心功能隔隔离的设计模式,非常值得我们借鉴。

72130
您找到你想要的搜索结果了吗?
是的
没有找到

【小家Java】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结

3、于是开始找代码,某年某天某月~ 嗯,注意到一段这样的代码提交: private static ExecutorService executor = Executors.newFixedThreadPool...看这块代码的问题:咋一看,好像没什么问题,但深入分析,问题就出现在 Executors.newFixedThreadPool(15)这段代码上。...因为使用了 newFixedThreadPool 线程池,而它的工作机制是,固定了N个线程,而提交给线程池的任务队列是不限制大小的,如果Kafka发消息被阻塞或者变慢,那么显然队列里面的内容会越来越多,...public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor...newFixedThreadPool public static ExecutorService newFixedThreadPool(int nThreads) { return new

9.9K43

Java(多线程②)

线程池 JDK1.5之后,实现了线程池程序; java.util.concurrent 类Executors:工厂类,创建线程池工厂; (方法)static ExecutorService newFixedThreadPool...返回值为线程池对象; 步骤: 1、创建线程池对象; 2、创建Runnable接口子类对象; 3、提交Runnable接口子类对象; 测试类 ExecutorService es = Executors.newFixedThreadPool...System.out.println(Thread.currentThread().getName()+"的方法"); } } 执行结果 ExecutorService es = Executors.newFixedThreadPool...(2);//创建线程池 es.shutdown();//停止线程池 创建线程的方式③(实现Callable接口) 实现步骤: 1、工厂类Executors静态方法newFixedThreadPool...提交线程任务; Future submit(Callable c) Future的get()方法获取线程任务的返回值 测试类 ExecutorService es = Executors.newFixedThreadPool

63020

【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

文章目录 前言 一、ThreadPoolExecutor 构造参数 二、newCachedThreadPool 参数分析 三、newFixedThreadPool 参数分析 四、newSingleThreadExecutor...参数分析 前言 在上一篇博客 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor...此时线程池中的线程如果执行完毕 , 可以复用之前创建的 100000 线程池 , 不用重新创建线程 ; 前提是期间没有间断 , 如果线程间断超过了 " 非工作线程存活时间 " , 这些线程就会被销毁 ; 三、newFixedThreadPool...参数分析 ---- ExecutorService executorService2 = Executors.newFixedThreadPool(10); 创建线程池代码如下 : public...static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads

1.3K20
领券