Thread - 线程同步(解决高并发)
线程同步
概念: 多个线程操作同一个对象, 简称 并发
形成条件: 队列 + 锁
synchronized : 锁
一个线程持有锁会导致其他所有需要此锁的线程挂起;
在多个线程竞争下,加锁,释放锁会导致比较多的上下文切换 和 调度延迟, 引起性能问题。
如果一个优先级高的线程等待一个优先级低的线程释放锁 会导致优先级倒置,引起性能问题。
同步块
synchronized(Obj){}
Obj 称之为 同步监视器
Obj 可以是任何对象, 但是推荐使用共享资源作为同步监视器
同步方法种无需指定同步监视器,因为同步方法的同步监视器就是this,就是这个对象本身,或者是class。
同步监视器的执行过程:
1、第一个线程访问,锁定同步监视器,执行其中代码。
2、第二个线程访问,发现同步监视器被锁定,无法访问。
3、第一个线程访问完毕,解锁同步监视器。
4、第二个线程访问,发现同步监视器没有锁,然后锁定并访问。
示例1:

示例2:

示例3:


浙公网安备 33010602011771号