学习笔记20230318
目录
四、Sychronized和ReenTrantLock有什么区别
六、ReenTrantLock 公平锁和非公平锁,底层是如何实现的
一、创建线程有哪几种方式
extends Thread;
implement Runable;
implement Callable; FutureTask()->new Thead(); task.get()
Executors;
都是基于Runable;
二、为什么不建议Executors来创建线程池
使用无界阻塞队列,可能会导致OOM;
三、线程池有哪几种状态,分别来表示什么
Running:可运行状态,正常运行任务,接受新任务;
Shutdown:停止接收任务,将队列 中的任务执行完;
Stop: shutdownnow,中断正在运行的任务,不会将队列中的任务执行完;
Tidying: 线程池都tidying ,terminated();
terminated:
四、Sychronized和ReenTrantLock有什么区别
1、java关键字,jdk的类;
2、jvm 层面,api;
3、自动释放锁,手动释放锁;
4、非公平锁,非公平和公平锁;
5、锁升级,锁不升级;
五、ThreadLocal 有哪些应用场景
1、传递变量保证线程安全;
2、数据库连接;
3、注意:Thread下都有ThreadLocalMap,是ThreadLocal 内部类,Key值是弱引用,在多线程下Entry 可能会造成内存泄漏,手动释放remove;
六、ReenTrantLock 公平锁和非公平锁,底层是如何实现的
公平锁和非公平锁:加锁是否需要先排队(AQS队列);
唤醒是没有区别的;
七、Synchronized 锁的升级是怎样的;
偏向锁:对象头有一个线程ID,可重入;
轻量级锁:有另外 一个线程来竞争,通过自旋方式,不阻塞线程;
重量级锁:自旋次数过多,升级重量级锁,会阻塞线程;
自旋:一直判断锁的状态;
八、Tomcat中为什么要有自定义加载器
1、方法区通过类的唯一标识,可以使用类加载器去做区别;
2、热加载的机制;
九、面向对象
面向过程:打开洗衣机 -> 放衣服 -> 放洗衣粉-> 清洗 -> 烘干;
面向对象:区别成对象:人和洗衣机;
优点:易复用,扩展,维护;
十、JDK、JRE、JVM区别和联系
JDK: 开发工具;相比jre jconsole ,javac ;
JRE: 运行环境;只需要运行的情况,只需要安装 jre;
JVM: 机器能识别的语言,Window,Linux 不同的JVM , 一处编译到处运行;
总结
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击