java创建线程池有哪几种方式? 为何搜索到的都是说4种

直接说,Java线程池创建方法多,常见四种,但实际不止。
下面简单分析:
1 . Executors工厂类:有6 种方法,比如固定大小、弹性伸缩等。
但要注意,阿里手册不建议用,因为可能资源管理出问题。
2 . ThreadPoolExecutor:自己配置,灵活可控,推荐用。
3 . 第三方工具:比如Hutool、Guava,简化配置,但灵活性不如自己配置。
4 . 特殊方式:如ForkJoinPool、Spring的ThreadPoolTaskExecutor,适合特定场景。

为啥推荐不用Executors?因为可能资源失控、队列类型不透明、灵活性差。
总结:基础用Executors,生产用ThreadPoolExecutor或第三方封装,特殊场景用特定工具。
你自己看,选哪种得根据实际需求。

Java多线程初学者指南(3):使用Runnable接口创建线程

代码有错误。
实例化两个Thread对象时,用了两次MyRunnable()。

应该改成: java MyRunnable t1 = new MyRunnable(); MyRunnable t2 = new MyRunnable();
Thread thread1 = new Thread(t1 , "MyThread"); Thread thread2 = new Thread(t2 );
否则会重复执行同一个run方法。

JAVA面试题 JAVA中创建线程有几种不同的方式

嗯... 使用Runnable接口创建线程啊...
这玩意儿... 2 02 2 年的时候,我也搞不太懂。
后来才反应过来,这好歹是把 CPU、代码、数据分开了,对吧?这样模型看着清晰点儿。

而且啊,线程体那个 run() 方法,所在的类还能从别的类里继承点属性和方法。
这挺好的,对吧?反正我后来这么理解的。

再说那个直接继承 Thread 类啊... 这个... Thread 子类没法再从别的类继承,对吧? Java 这语言就是这么单继承。
这点挺烦人的。

不过啊,直接继承 Thread 类,写起来简单。
run() 方法里的当前对象,就是线程对象,直接操作,没毛病。

反正啊,我后来听说,现在实际应用中,几乎都采取第一种方式,就是用 Runnable 接口。