温故知新-并发编程篇

简介: 温故知新-并发编程篇

01 Mind Map

02 Question&Answer

Q1: 线程创建方式?

A: 分为“有返回结果”(3种)和“无返回结果”


Q2: 线程分类?

A: 两种,哪两种?有什么特性?


Q3: 线程运行状态?

A: 5个流程,分别对应代码那一部分?


Q4: 线程优先级?

A: 两个方法的特点、设置优先级的范围


Q5: 如何让3个线程按顺序执行?

A: 使用join方法,考虑具体如何实现?


Q6: 如何让3个线程按顺序执行?

A: 使用join方法,考虑具体如何实现?


Q7: 线程安全的解决方案?

A: 两种,考虑分别怎么使用


Q8: 线程安全的解决方案的原理?

A: ?


Q9: 多线程死锁举例?

A: ?


Q10: ThreadLocal的含义及实现原理?

A: ?


Q11: volatile的特性以及与Synchronized区别?

A: 3个特性(可见性、禁止重排序、性能),区别:原子性和性能(volatile不能保证原子性)


Q12: 重排序在单线程与多线程中的区别?

A: 遵循的语义以及对结果是否改变这两方面考虑


Q13: JMM含义?

A: 从共享变量和私有变量考虑


Q14: 多线程通讯?

A: notify/notifyall 、wait、Lock、Condition,举例:设置姓名与性别”?


Q15: sleep和wait的区别?

A: 从是否释放锁考虑


Q16: 并发包里的3个类的特点、对应的代码?

A: CountDownLatch(计数器)、CyclicBarrier(屏障)、Semaphore(计数信号量)


Q17: 并发包里的非阻塞队列(ConcurrentLinkedDeque)和阻塞队列(BlockingQueue)特性?

A:从适用场景、遵循原则考虑


Q18: 通过阻塞队列LinkedBlockingQueue来模拟生产者和消费者?

A:offer与poll方法


Q19: 线程池的5个分类?

A:newCahcedThreadPool(可复用线程的线程池)、newFixedThreadPool(定长线程池)、newSingleThreadExecutor(单个worker线程线程池)、newScheduleThreadPool(指定时间或延后执行的线程池)、newSingleThreadScheduledExecutor(单线程+定时执行执行线程池)


Q20: 线程池流程原理?

A:提交线程 -> 核心线程数 -> 缓存队列 ->最大线程数 ->拒绝或创建并执行任务。


Q21: 如何合理配置线程池?

A:线程等待时间越长,需要越多线程。线程CPU时间越高,需要越少线程。


Q22: 什么是重入锁,案例?

A:内置锁与显示锁这方面考虑


Q23: 乐观锁与悲观锁含义及应用场景?

A:数据库、version,是否操作。。。。。


Q24: 什么是CAS无锁及案例?

A:CAS(V,E,N)分表表示什么,底层流程如何操作?


Q25: 什么是自旋锁?

A:线程竞争不激烈,并且波爱吃锁的时间段,则推荐使用自旋锁?


Q26: 分布式锁有哪些,各自原理是什么?

A:举例?


Q27: 原子类的特性?

A:举例?AtomicInteger,CAS操作线程安全,高伸缩性


Q28: Disruptor框架?

A:一种高效的“生产者-消费者”模式,使用队列(一种环形RingBuffer)实现,底层是数组。

03 New Insights

Q: 什么情况下使用volatile?

A:volatile什么时候使用?什么时候,线程内存数据跟主内存数据进行交换、更新。

目录
相关文章
|
安全 Java
并发编程系列教程(完) - 终章总结
并发编程系列教程(完) - 终章总结
48 0
|
4月前
|
安全 NoSQL Java
|
6月前
|
安全 Java 调度
解密Java并发编程的奥秘
解密Java并发编程的奥秘
|
7月前
|
算法 安全 Java
探索Java并发编程的奥秘
【5月更文挑战第26天】 在多线程的世界里,Java并发编程是一块重要的领域。本文将深入探讨Java并发编程的基本概念、实现方式以及常见问题,帮助读者更好地理解和掌握并发编程的技巧。
39 2
|
7月前
|
算法 安全 C语言
【C 言专栏】C 语言中的多线程编程
【5月更文挑战第5天】本文探讨了C语言中的多线程编程,包括多线程概念、通过POSIX线程库和Windows线程库的实现方式、基本步骤(创建、执行、同步、销毁线程)、线程同步机制(互斥锁、条件变量、信号量)以及优点(提高性能、增强并发处理、改善用户体验)。同时,文章指出多线程编程面临的挑战如线程安全、死锁和资源竞争,并提及内存管理问题。通过案例分析和展望未来趋势,强调了掌握多线程编程在提升程序效率和应对复杂任务中的重要性。
267 0
【C 言专栏】C 语言中的多线程编程
|
Java API 调度
并发编程系列教程(01) - 多线程基础
并发编程系列教程(01) - 多线程基础
71 0
|
7月前
|
Linux 调度
Linux应用开发基础知识——多线程编程(十)
Linux应用开发基础知识——多线程编程(十)
67 0
Linux应用开发基础知识——多线程编程(十)
|
7月前
|
数据采集 缓存 分布式计算
java并发编程实践——王宝令(极客时间)学习笔记
java并发编程实践——王宝令(极客时间)学习笔记
89 0