分享50道Java并发高频面试题。 线程池 线程池:一个管理线程的池子。 为什么平时都是使用线程池创建线程,直接new一个线程不好吗? 嗯,手动创建线程有两个缺点 不受控风险 频繁创建开销大 为什么不受控? 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建线程没有统一标准,比如创建的线程有没有名字等。当系统运行起来,所有线程都在抢占资源,毫无规则,混乱场面可想而知,不好管控。 频繁手动创建线程为什么开销会大?跟new Object() 有什么差别? 虽然Java中万物皆对象,但是new Thread() 创建一个线程和 new Object()还是有区别的。 new Object()过程如下: JVM分配一块内存 M 在内存 M 上初始化该对象 将内存 M 的地址赋值给引用变量 obj 创建线程的过程如下: JVM为一个线程栈分配内存,该栈为每个线程方法调用保存一个栈帧 每一栈帧由一个局部变量数组、返回值、操作数堆栈和常量池组成 每个线程获得一个程序计数器,用于记录当前虚拟机正在执行的线程指令地址 系统创建一个与Java线程对应的本机线程...