java线程同步方法
1.同步方法
synchronized修饰方法,对象内置锁保护整个方法(对象锁)
若方法static修饰,类锁
2.同步代码块
同步—高开销—减少同步内容
3.wait和notify
wait:线程处于等待,释放锁
sleep:线程睡眠,不释放锁
notify:随机唤醒某个处于等待的线程
notifyall:唤醒所有等待线程
4.volatile—可见性,禁止指令重排序
5.重入锁(ReentrantLock)
线程可以进入一个它已经拥有锁所同步的代码块
lock() and unlock()
6.局部变量(ThreadLocal类)— 空间换时间
每个线程可以获得某变量的副本,并相互独立
不同线程只能get,set,remove自己的变量,不影响其他线程
7.阻塞队列 — java.util.concurrent(JUC)
ArrayBlockingQueue、LinkedBlockQueue、PriorityBlockingQueue