zoukankan      html  css  js  c++  java
  • 共享受限资源,Brian的同步规则

    说明:如果一个变量是boolean,则此变量是原子性的,即赋值和返回值简单的操作在发生时没有中断的可能。

           递增不是原子性炒作。

    解决共享资源竞争:

         1. 通过加锁,锁语句会产生相互排斥的效果,此种机制也成为互斥量。

             通过关键之synchronized 关键字锁也称为监视器。

         2. 通过使用显式的Lock对象,通过调用lock()与unlock()方法,其中unlock要在try-finally中的finally

    二种方式比较:显示的Lock对象在加锁和释放锁方面,相对于内建的synchronized锁来说,赋予了更细粒度的控制力。而且显示Lock可以处理异常。

                        但是,建议只有在解决特殊问题时,才使用显示的Lock对象。

    Brian的同步规则:

       如果你正在写一个变量,他可能接下来将被另一个线程读取,或则正在读取一个上一次已经被另一个线程写过的变量,那么必须使用同步,

    并且,读写线程都必须用相同的监视器锁同步。

    注意:如果你的类中用超过一个方法处理临界数据,那么你必须同步所有相关的方法。如果只同步一个方法,那么其他方法将会随意护绿这个对象锁,并可以

    在无任何惩罚的情况下被调用。这是很重要的一点:每个访问临界共享资源的方法都必须被同步,否则他们就不会正确地工作。

    以上:来至于java编程思想

  • 相关阅读:
    第八章 路由器交换机及其操作系统的介绍
    k-Tree DP计数
    Drop Voicing 最长升序
    高精度
    1196D2
    C
    POJ 3974 马拉车
    2020.8.1第二十六天
    2020.7.31第二十五天
    每日日报
  • 原文地址:https://www.cnblogs.com/beijingstruggle/p/4979477.html
Copyright © 2011-2022 走看看