面试官一个线程池问题把我问懵逼了。 (下)

简介: 面试官一个线程池问题把我问懵逼了。 (下)

而这个方法里面会执行 remove 的操作。

于是线程就被回收了。

所以当超过指定时间后,线程会被回收。

那么被回收的这个线程是核心线程还是非核心线程呢?

不知道。

因为在线程池里面,核心线程和非核心线程仅仅是一个概念而已,其实拿着一个线程,我们并不能知道它是核心线程还是非核心线程。

这个地方就是一个证明,因为当工作线程多余核心线程数之后,所有的线程都在 poll,也就是说所有的线程都有可能被回收:

image.png

另外一个强有力的证明就是 addWorker 这里:

image.png

core 参数仅仅是控制取 corePoolSize 还是 maximumPoolSize。

所以,这个问题你说怎么回答:

image.png

JDK 区分的方式就是不区分。

那么我们可以知道吗?

可以,比如通过观察日志,前面的案例中,我就知道这两个是核心线程,因为它们最先创建:

  • Thread[test-1-1,5,main]-执行任务
  • Thread[test-1-2,5,main]-执行任务

在程序里面怎么知道呢?

目前是不知道的,但是这个需求,加钱就可以实现。


image.png

自己扩展一下线程池嘛,给线程池里面的线程打个标还不是一件很简单的事情吗?

只是你想想,你区分这玩意干啥,有没有可落地的需求?

毕竟,脱离需求谈实现。都是耍流氓。


最后说一句


才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以在后台提出来,我对其加以修改。

感谢您的阅读,我坚持原创,十分欢迎并感谢您的关注。

目录
相关文章
|
2月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
1月前
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)
|
1月前
|
消息中间件 前端开发 NoSQL
面试官:线程池遇到未处理的异常会崩溃吗?
面试官:线程池遇到未处理的异常会崩溃吗?
66 3
面试官:线程池遇到未处理的异常会崩溃吗?
|
1月前
|
消息中间件 存储 前端开发
面试官:说说停止线程池的执行流程?
面试官:说说停止线程池的执行流程?
46 2
面试官:说说停止线程池的执行流程?
|
1月前
|
消息中间件 前端开发 NoSQL
面试官:如何实现线程池任务编排?
面试官:如何实现线程池任务编排?
29 1
面试官:如何实现线程池任务编排?
|
2月前
|
安全 Java
【Java集合类面试十三】、HashMap如何实现线程安全?
实现HashMap线程安全的方法包括使用Hashtable类、ConcurrentHashMap,或通过Collections工具类将HashMap包装成线程安全的Map。
【多线程面试题 一】、 创建线程有哪几种方式?
创建线程的三种方式包括继承Thread类、实现Runnable接口和实现Callable接口,其中Runnable和Callable接口方式更受推荐,因为它们允许多重继承并更好地体现面向对象思想。
|
2月前
|
Java
【Java集合类面试十二】、HashMap为什么线程不安全?
HashMap在并发环境下执行put操作可能导致循环链表的形成,进而引起死循环,因而它是线程不安全的。
|
2月前
|
Java 调度
【多线程面试题 五】、 介绍一下线程的生命周期
线程的生命周期包括新建、就绪、运行、阻塞和死亡状态,线程状态会根据线程的执行情况在这些状态之间转换。
【多线程面试题 五】、 介绍一下线程的生命周期
|
2月前
|
存储 安全 Java
【多线程面试题十七】、如果不使用synchronized和Lock,如何保证线程安全?
这篇文章探讨了在不使用`synchronized`和`Lock`的情况下保证线程安全的方法,包括使用`volatile`关键字、原子变量、线程本地存储(`ThreadLocal`)以及设计不可变对象。