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)使用一个布尔变量以控制是否需要停止任务并终止该线程

#Java##面试题目#
全部评论
借楼 场景金融服务技术团队,专注于构建贸易和供应链金融生态体系,服务好全球中小企业,让融资难不再阻碍贸易 欢迎加我微信聊,我们有答疑的群,老板也在里面,可以直接交流 简历投递邮箱:zhangpeng.mzp@alibaba-inc.com 微信号:shuxintuwu
点赞 回复
分享
发布于 2021-03-08 15:18

相关推荐

1 17 评论
分享
牛客网
牛客企业服务