synchronized关键字的作用范围
- 对于普通的同步方法,锁的是当前实例对象
- 对于静态方同步方法,锁的是当前的Class对象
- 对于同步方法块,锁的是Synchronized括号里的配置对象
公平锁与非公平锁
公平锁
死锁
- 什么是死锁
- 死锁的产生原因
- 利用
jps -l
和 jvm自带的工具:jstack 跟踪发现死锁问题
Runnable 与 Callable
Thread的构造方法中只有Runnale类型的参数,所以无法用Callable直接当作参数,创建线程。
Runnable接口有一个实现类:FutureTask;FutureTask的构造可以传递Callable。
三个常用工具类
减少计数CountDownLatch
循环栅栏CyclicBarrier
信号量Semaphore
读写锁
一个资源可以被多个读线程访问,或者 只被一个写线程访问,但是不能同时存在读写线程。
读锁:共享锁
写锁:独占锁
会发生死锁现象
锁降级: