什么是 JAVA 个性化线程池?

发布于 2022-09-12 01:06:39 字数 66 浏览 22 评论 0

面试官说一般不直接用 java 线程池,而是创建个性化的线程池,俺完全没有接触过,有大佬能分享下么?最好给个文章链接。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寻找我们的幸福 2022-09-19 01:06:39

使用 Java 的 Executors工具类可以直接创建以下种类的线程池:

  1. FixedThreadPool:线程数量固定,但可无限添加任务的线程池
  2. SingleThreadExecutor:单线程线程池
  3. CachedThreadPool:可无限添加线程的线程池
  4. ScheduledThreadPool:执行定时任务的线程池
  5. ForkJoinPool:可以并发执行子任务的线程池

直接使用这些线程池虽然很方便,但是存在两个比较大的问题:

  1. 有的线程池可以无限添加任务或线程,容易导致 OOM;
  2. 这些线程池的线程都是使用 JDK 自带的线程工厂 (ThreadFactory)创建的,线程名称形式都是pool-1-thread-1,第一个数字是线程池编号,第二个数字是线程编号,这样很不利于系统异常时排查问题。

如果你安装了阿里编码规约的插件,在使用Executors创建线程池时会出现以下提示:

Alibaba Java Coding Guidelines.png
所以尽量使用new ThreadPoolExecutor(...)自定义线程池,也可以使用上图中的第三方工具。
更详细的自定义线程池方法我后面会写篇博客,到时候再分享过来哈哈。

溺渁∝ 2022-09-19 01:06:39

即不直接使用 Executors 里自带的各类线程池,而是使用 new ThreadPoolExecutor(...) 定义线程池各项具体参数.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文