2020 java 并发编程面试题及答案(最全版本持续更新)

这篇博客汇总了Java并发编程的面试重点,包括守护线程与用户线程的区别、线程与进程的差异、上下文切换概念、死锁、活锁与饥饿的解析,以及Java线程调度算法、Lock接口的优势、Executor框架、阻塞队列在生产者-消费者模型中的应用等核心知识点。还探讨了FutureTask、并发容器实现、线程同步与互斥的策略,并深入讨论了Java中的死锁问题和避免方法。此外,文章还提到了Linux环境下查找CPU使用率最高线程的方法以及Java中的线程通信和线程安全相关知识点。
摘要由CSDN通过智能技术生成

前言

涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf.

1、在 java 中守护线程和本地线程区别?

 

java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。

 

任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在 Thread.start()之前调用,否则运行时会抛出异常。

 

两者的区别:

 

唯一的区别是判断虚拟机(JVM)何时离开,Daemon 是为其他线程提供服务,如果全部的 User Thread 已经撤离,Daemon 没有可服务的线程,JVM 撤离。也可以理解为守护线程是 JVM 自动创建的线程(但不一定),用户线程是程序创建的线程;比如 JVM 的垃圾回收线

 

程是一个守护线程,当所有线程已经撤离,不再产生垃圾,守护线程自然就没事可干了,当垃圾回收线程是 Java 虚拟机上仅剩的线程时,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值