首页 > Java常见面试题(四)
头像
小谢backup
编辑于 2021-02-25 00:57
+ 关注

Java常见面试题(四)

1、线程池有哪四种?

newCachedThreadPool:创建一个可缓存的线程池

newFixedThreadPool:创建固定大小的线程池

newSingleThreadExecutor:创建一个单线程的线程池

newScheduledThreadPool:创建一个大小无限的线程池,用于定时任务


2、提交任务时,如果线程池队列已满,这时会发生什么?

如果是无界队列,则继续添加任务;

如果是有界队列,会先增加线程数量,线程数量达到某一值后,会采取拒绝策略,默认为AbortPolicy


3、线程池队列的拒绝策略有哪些?

AbortPolicy:抛异常

CallerRunsPolicy:由请求者线程直接运行

DiscardPolicy:不理睬提交的任务

DiscardOldestPolicy:丢弃队列中最旧的任务


4、CAS有什么问题?

  • ABA问题
  • 循环时间长开销大;
  • 只能保证一个共享变量的原子操作


5、有哪些线程安全的集合类?

vector、stack、hashtable、enumeratiion


6、Java线程之间的通信方式有哪两种?

共享内存、消息传递


7、编译器和处理器对指令重排序的类型有哪三种?

1)编译器优化的重排序;

2)指令级并行的重排序;

3)内存系统的重排序


8、处理器如何实现原子操作?

1)使用总线锁保证原子性;

2)使用缓存锁保证原子性


9、Java如何实现原子操作?

1)使用循环CAS;

2)使用锁


10、如何安全地终止线程?

1)中断;

2)使用一个布尔变量以控制是否需要停止任务并终止该线程

更多模拟面试

全部评论

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

推荐话题

相关热帖

近期精华帖

热门推荐