- ReentrantLock和Synchornized区别
Synchornized是java内建的同步机制,java1.5之前是java唯一的同步机制,可以作用于方法或者代码块,非公平锁
ReentrantLock是可重入锁,使用lock()\unlock()方法进行锁定,解锁,还提供啦一些类似公平锁的实现,提供公平锁和非公平锁两种实现。
Synchornized在java1.6之前是基于操作系统的互斥锁,涉及用户态和内核态的切换,因此之前性能比较低,后续引入了偏斜锁、轻量级锁、重量级锁,优化性能
- 一个线程调用两次start()方法会怎样,
第二次调用会抛出illegalThreadStateException.
Thread几个状态:New\Runnable\blocked\waiting\time_wating
- 什么情况下会产生死锁,如何定位和修复
两个线程互相持有锁,都在等待对方的锁释放
定位方法,使用top命令,查找出进程,转换16进制,jstack命令查看线程栈信息