synchronized关键字的作用范围

  1. 对于普通的同步方法,锁的是当前实例对象
  2. 对于静态方同步方法,锁的是当前的Class对象
  3. 对于同步方法块,锁的是Synchronized括号里的配置对象

公平锁与非公平锁

公平锁

死锁

  1. 什么是死锁
  2. 死锁的产生原因
  3. 利用 jps -l 和 jvm自带的工具:jstack 跟踪发现死锁问题

Runnable 与 Callable

Thread的构造方法中只有Runnale类型的参数,所以无法用Callable直接当作参数,创建线程。
Runnable接口有一个实现类:FutureTask;FutureTask的构造可以传递Callable。

三个常用工具类

减少计数CountDownLatch

循环栅栏CyclicBarrier

信号量Semaphore

读写锁

一个资源可以被多个读线程访问,或者 只被一个写线程访问,但是不能同时存在读写线程。
读锁:共享锁
写锁:独占锁
会发生死锁现象

锁降级: