2.如何理解线程池的7个参数?

七大参数:
corePoolSize:核心线程数
maximumPoolSize: 最大线程池大小(等队列满了才回去调其他线程处理任务)
keepAliveTime: 生存时间
TimeUnit.SECONDS:空闲时间单位
new ArrayBlcokingQueue<Runable>(capacity:4):任务队列
Excutors.defaultThreadFactory():线程池产生的工厂
new ThreadPoolExcutor.CallerRunsPolicy(): 拒绝策略

 重点:最大线程数如何设置?
 通过并发量去推算

 如果CPU是纯计算,多少任务能把CPU占满?  1个
 如果CPU只有50%做计算,多少任务能把CPU占满?  2个
 如果CPU只有20%做计算,多少任务能把CPU占满?  5个

我是7年经验的程序员,以下面试题请给我答案,要求全面有深度: 1.线程池核心参数有哪些?线程池工作流程?有哪几种线程池?说明不同线程池类型的使用场景及其优缺点? 2.synchronized和ReentrantLock有什么区别?在实际项目中,您如何选择使用它们? 4.什么是死锁?如何预防和解决死锁? 5.阻塞队列有哪些?分别介绍一下 6.在并发编程中,CountDownLatch、CyclicBarrier和Semaphore有何异同?请举例说明它们各自的使用场景。 7.如何通过使用volatile关键字解决Java中的可见性问题?volatile与原子操作有什么关系? 8.ConcurrentHashMap在Java1.8中相比之前的版本有哪些重要改进? 9.ConcurrentHashMap是线程安全的吗?在哪种情况下可能会出现数据一致性问题?您会如何防止这种情况发生? 10 在处理并发数据访问时,您是如何考虑选择乐观锁还是悲观锁的?为什么? 11.HashMap存储数据的过程 12.介绍一下ThreadLocal,ThreadLocal内存泄漏问题 13.谈谈你是如何理解线程安全的?有哪些实现线程安全的方案? 14.并发和并行的区别? 15.synchronized的实现原理?它是如何保证原子性、可见性及有序性?锁升级的过程是怎么样的?synchronized是非公平锁吗,是如何体现非公平的? 16.如何理解CAS?存在什么问题?CAS一定要自旋吗? 17.介绍一下AQS?AQS中的同步队列和条件队列原理?什么是AQS的独占模式和共享模式?AQS为什么采用双向链表?
最新发布
10-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值