首页
学习
活动
专区
工具
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

63220

对线面试官-线程池(一)

它提供了 6 种创建线程池的方式,包括 newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor、newScheduledThreadPool...面试官:那你能介绍一下 newFixedThreadPool 的使用方法吗? 派大星:当然可以。...newFixedThreadPool 可以创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待。...我们可以通过以下代码来创建一个固定大小的线程池: ExecutorService threadPool = Executors.newFixedThreadPool(2); 面试官:那你能介绍一下 Executors...而 newFixedThreadPool 可以限制线程的数量,避免线程数过多,但是如果任务数量过多,会导致任务在队列中等待,从而导致响应时间变慢。 面试官:那你建议我们使用哪种创建方式呢?

17320

【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
领券