从NEW到TERMINATED,线程的六种状态我用三次线上故障才彻底搞懂
搞Java后端八年,线程生命周期是我面试必问、工作中必踩坑的基础知识。有人以为线程调用了start()立马就跑,有人分不清WAITING和BLOCKED的区别,还有人把sleep()和wait()混为一谈——每一个误解我都见过它们引发线上故障。
java高级用法之:绑定CPU的线程Thread-Affinity
简介在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核。为了充分利用现代CPU的功能,JAVA中引入了多线程,不同的线程可以同时在不同CPU或者不同CPU核中运行。
还不懂Java线程池实现原理,看这一篇文章就够了
线程池无论是工作还是面试都是必备的技能,但是很多人对于线程池的实现原理却一知半解,并不了解线程池内部的工作原理,今天一灯就带大家一块剖析线程池底层实现原理。
震惊!这样终止线程,竟然会导致服务宕机?
1.自定义退出标识我们可以自定义一个布尔变量来标识是否需要退出线程,实现代码如下://自定义退出标识退出线程static class FlagThread extends Thread { public volatile boolean exit = false; public
下游超时了,另外两个线程还在白跑
凌晨两点,报警群炸了。商品详情页的TP99从300ms飙到8秒,CPU没满,内存没满,但整个接口像被按了暂停键。翻了半天日志,发现是下游某个推荐服务响应慢,超时了5秒。但诡异的是——它超时了,另外两个并行查询订单和库存的线程还在傻等,直到超时为止。
看起来是线程池的BUG,但是我认为是源码设计不合理
前几天看到一个 JDK 线程池的 BUG,我去了解了一下,摸清楚了它的症结所在之后,我觉得这个 BUG 是属于一种线程池方法设计不合理的地方,而且官方在知道这个 BUG 之后表示:确实是个 BUG,但是我就不修复了吧,你就当这是一个 feature 吧。
面试官:线程如何启动和优雅的终止
首先看下Thread的构造方法:当然Thread有多个构造方法,都是调用init方法初始化一个线程。
面试必备:ThreadLocal详解
前言大家好,我是捡田螺的小男孩。无论是工作还是面试,我们都会跟ThreadLocal打交道,今天就跟大家聊聊ThreadLocal哈~ThreadLocal是什么?
Interrupted Exception异常可能没你想的那么简单
摘要: 当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常。如果我们对InterruptedException异常处理不当,则会发生我们意想不到的后果!