【JAVA SE基础篇】59.同步块、并发容器和死锁

1.同步块

同步块(synchronized(obj)){  },obj称之为同步监视器

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

  2.同步方法中无需指定同步监视器,因为同步方法的同步监视器时this即该对象本身,或class即类的模子

同步监视器执行过程

  1.第一个线程访问,锁定同步监视器,执行其中代码

  2.第二个线程访问,发现同步监视器被锁定,无法访问

  3.第一个线程访问完毕,解锁同步监视器

  4.第二个线程访问,发现同步监视器未锁,访问并锁定

注:java中四大块:局部块,构造块,静态块,同步块。

 

 例:

 

 2.并发容器

3.死锁

多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,

而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有

"两个以上对象的锁"时,就可能会发生死锁的问题

例:

 

posted @ 2020-07-17 20:26  CKuan  阅读(176)  评论(0编辑  收藏  举报