美文网首页
java-synchronized 理解

java-synchronized 理解

作者: hello_world_cxm | 来源:发表于2021-03-04 23:04 被阅读0次
//synchronized (mylist){   //synchronized 实际教监视器 中译叫锁,意思是线程进入这个空间,就必须执行完空间内的代码块才能release
                    mylist.add("D");
                //}

同步代码块里面是原子操作,synchronized保护原子操作防止被打断,o代表是当前对象,synchronized就是对当前对象加锁,那么其他对象就无法访问该同步代码块。当o对象执行完同步代码块之后,就会将这个锁标记释放出来,然后os从就绪的线程中挑选一个线程,并且尝试获取锁标记从而进入代码块,执行原子操作。

所以synchronized虽然提供了线程安全,但是牺牲了并发效率,千军万马过独木桥。想StringBuffer 就是线程安全 StringBuilder就是线程不安全。其实所谓线程安全就是类中的方法被synchronized修饰,从而变成了线程安全。
----------------------------------------------------------死锁---------------------------------
前提:一个线程可以获取多个锁标记,那么一个线程如何获得多个锁标记呢?嵌套,

一个线程可以拿到多个对象的锁标记,每个对象都有自己的锁标记。每个对象就好比每个公用电话亭,每个电话亭门前都挂有一把锁,线程就是打电话的人,监视器就是检查打电话的人,有没有拿到当前对象的锁,只有拿到这个电话亭的锁,人才可以进去完成打电话操作。且每个线程是可以拿多个电话亭的锁,但是每个电话亭的锁每次只能给一个人用,也就是一个线程用,这就是同步代码块嵌套,就是电话停又包含一个电话亭,要想打电话,就必须拿到两个电话亭的锁标记。

Synchronized(o){
o.wait() //o对象会失去cpu以及锁标记
}

相关文章

  • java-synchronized 理解

    同步代码块里面是原子操作,synchronized保护原子操作防止被打断,o代表是当前对象,synchronize...

  • Java-synchronized

    synchronized是java的关键字(内置的),Lock是java的接口。两者都实现了对于临界资源的同步互斥...

  • Java-synchronized

    从代码入手,先看下代码 注意这里我们加锁的方式是同步代码块,然后反编译下class文件,看一下get方法 这里我们...

  • 深入理解Java-synchronized关键字

    理解Java中的synchronized关键字 问题思考:我们可以带着问题理解 synchronized 1.理解...

  • java-synchronized记录

    总结:所有的 synchronized 都是作用在对象上的。 参考 https://juejin.im/post/...

  • [Java]重学Java-synchronized

    synchronized的作用 synchronized作为Java提供的锁关键字,在单进程的时候可以提供互斥的功...

  • 理解!理解!!理解!!!

    1、如何理解MVC设计模式 MVC是一种架构模式,M表示MOdel,V表示视图View,C表示控制器Control...

  • 理解“理解”

    教育不是灌输而是揭示 教育就是向智者揭示智慧,对愚者掩盖无知。——安布罗斯 比尔斯 我们的课堂教学要做的是设计表现...

  • 理解理解,再理解

    【今日悦读】 1214-潇潇 书名:财富自由之路 作者:李笑来 篇目:10~12节 收获: 1,人生三大坑 莫名其...

  • 理解不被理解

    一个人的坐在电脑前发呆,不知道搞什么,闭上眼睛,感觉自己很孤独。这种是内心的那种,很不是滋味,不知道什么时候自己才...

网友评论

      本文标题:java-synchronized 理解

      本文链接:https://www.haomeiwen.com/subject/dcvhqltx.html