微服务接口定义实践
MyBatis && MyBatisPlus 源码分析
Java中异常应用实践
并发学习笔记
- 四、并发编程基础
- 1、为什么使用多线程
- 2、如何设置线程优先级
- 3、线程有哪些状态
- 4、如何达到线程的各种状态
- 5、线程各种状态之间如何转换
- 6、Daemon线程有什么特点,如何创建Daemon线程
- 7、线程的中断是什么,如何进行中断相关操作
- 8、中断有什么用?
- 9、suspend()、resume()和stop()作用
- 10、使用 stop/interrupt 结束进程有什么区别?
- 11、synchronized底层实现原理?
- 12、如何实现 等待/通知 机制?
- 13、如何实现线程间的 管道输入/输出流?
- 14、Thread.join()有什么用?
- 15、ThreadLocal如何使用?
- 16、如何实现等待超时模式?
- 17、如何使用线程池?
- 17、如何实现一个简单的线程池?
- 18、如何用线程池实现简单的Web服务器?
- 五、Java中的锁
- 1、synchronized 和 Lock接口 比较优缺点?
- 2、Lock 接口如何使用?
- 3、如何实现独占锁?
- 4、AbstractQueuedSynchronizer 内部如何实现?
- 5、LockSupport的用途?
- 6、LockSupport的park/unpark与 object.wait/notify的区别?
- 7、如何实现TwinsLock?
- 8、什么是『重入锁』?如何实现『重入锁』?
- 9、『公平锁』和『非公平锁』区别?如何实现?
- 10、『读写锁』如何使用?如何实现『读写锁』?
- 11、除了
wait()
+notify()
+synchronize()
,如何实现『等待/通知』模式? - 12、Condition内部如何实现?