首页 > Java常见面试题(五)
头像
小谢backup
编辑于 2021-03-05 11:46
+ 关注

Java常见面试题(五)

1、线程池的任务队列有哪四种?

ArrayBlockingQueue:有界阻塞队列

LinkedBlockingQueue:无界阻塞队列

SynchronousQueue:不存储元素的阻塞队列

PriorityBlockingQueue


2、线程中断的原理是什么?

其它线程通过调用该线程的interrupt()对其进行中断


3、线程调度的方式有哪两种?

协同式线程调度、抢占式线程调度


4、线程的暂停/恢复怎么实现?

等待/通知机制

注:不是问“启停”

43volatile的实现原理?

编译器生成字节码时,在指令序列中插入内存屏障,防止指令重排


44volatile有什么特点?

原子性、可见性,但不能保证操作的原子性


5volatile要实现同步怎么做?

volatile===>CAS===>+循环===>原子===>+有序===>锁(同步)

口诀:原子有序即同步


6、如何减少线程的上下文切换?

  1. 无锁并发编程
  2. CAS算法
  3. 使用最少线程和使用协程


7、对象如何延迟初始化?

基于volatile的解决方案、基于类初始化的解决方案


注:不能用双重检查锁定


8、指令重排序的缺点?如何解决?

重排序可能会导致多线程程序出现内存可见性问题。

禁止特定类型的编译器重排序;通过内存屏障指令,禁止特定类型的处理器重排序。如volatile


9Java堆是否规整由什么决定?

由采用的垃圾收集器是否带有压缩整理功能决定。


10、重载是什么?

方法具备不同的特征签名(不包含方法返回值)

更多模拟面试

全部评论

(2) 回帖
加载中...
话题 回帖