从锁死的RUNNABLE线程谈UNIX的I/O模型
记录一下JAVA IO库(java version “1.8.0_131”)的一个坑。
背景
背景是一个爬虫,实际执行网络请求是通过共用一个固定核心线程数的线程池(FixedThreadPool)做下载操作,但是每次运行一段时间后,线程池就被僵尸进程塞满了,表现为新提交到线程池的下载操作都无法被执行。
记录一下JAVA IO库(java version “1.8.0_131”)的一个坑。
背景是一个爬虫,实际执行网络请求是通过共用一个固定核心线程数的线程池(FixedThreadPool)做下载操作,但是每次运行一段时间后,线程池就被僵尸进程塞满了,表现为新提交到线程池的下载操作都无法被执行。
结合Micrometer使用过程中的一个场景谈谈Java当中的几种引用。
最近尝试通过SpringBoot集成Micrometer来观测应用状态,注册自定义Meter的时候出现了一个问题,先看原先的代码:
续上篇。
现场面试考察的侧重点就更脱离场景,深入到底层。
考察基础通信原理,为什么tcp可以做到传输完整有序。
当时有一个争论的点在于虚拟机栈上的变量是否属于GC Root。
记录一下最近面试遇到的一些问题。
阅读代码的时候没有注意到这一点,瞎猜了一下是CPU核数的2倍。答案是默认线程池核心线程数是200 。
认真探究了一下,具体参考:如何合理地估算线程池大小