Thread - 线程同步(解决高并发)

线程同步

  概念: 多个线程操作同一个对象, 简称 并发

  形成条件: 队列 + 锁

synchronized : 锁

  一个线程持有锁会导致其他所有需要此锁的线程挂起;

  在多个线程竞争下,加锁,释放锁会导致比较多的上下文切换 和 调度延迟, 引起性能问题。
  
  如果一个优先级高的线程等待一个优先级低的线程释放锁 会导致优先级倒置,引起性能问题。


同步块

  synchronized(Obj){}

  Obj 称之为 同步监视器

  Obj 可以是任何对象, 但是推荐使用共享资源作为同步监视器

  同步方法种无需指定同步监视器,因为同步方法的同步监视器就是this,就是这个对象本身,或者是class。

同步监视器的执行过程:

  1、第一个线程访问,锁定同步监视器,执行其中代码。
  2、第二个线程访问,发现同步监视器被锁定,无法访问。
  3、第一个线程访问完毕,解锁同步监视器。
  4、第二个线程访问,发现同步监视器没有锁,然后锁定并访问。

 

示例1:

 

 

示例2:

 

 

示例3:

 

posted @ 2021-05-06 00:10  初心不负~  阅读(258)  评论(0)    收藏  举报