zoukankan      html  css  js  c++  java
  • 同步代码块、同步方法以及同步锁的语法

    1.同步代码块

    在Thread子类run()方法代码块之外套一个下面的代码

    synchronized(obj)
    {
    ...
    //此处就是原有的run()方法代码块
    }

    这里的obj就是需要锁定的对象。

    2.同步方法

    只要在可变类中修改方法上,加上synchronized修饰即可。

    注:同步方法的同步监视器是this。

    3.同步锁

    先在类中定义锁对象,然后在需要保证线程安全的方法中加锁(锁变量.lock()),最后再在finally块中保证释放锁(锁变量.unlock())

    class abc{
    //定义锁对象
    private final ReentrantLock lock = new ReentrantLock();
    //...
    
    //定义需要保证线程安全的方法
    public void f(){
    //加锁
    lock.lock();
    try{
    //实现代码块
    }
     //使用finally块来保证释放锁
    finally{
    lock.unlock();
    }
    }
        
    }

    思考:

    以上方法都是为了保证线程安全才存在的,是不是也就意味着只有可变类在多线程的情况下,才需要使用到这些方法。

  • 相关阅读:
    usaco-ariprog1-pass
    usaco-crypt1-pass
    usaco-barn-repair-pass-KISS
    usaco-mixing milk-pass
    面试HR
    LCS求最长公共子序列(DP)
    毕业随想(转载)
    0-1背包问题(DP)
    排序算法
    二叉搜索树的实现 java
  • 原文地址:https://www.cnblogs.com/moonpool/p/5480593.html
Copyright © 2011-2022 走看看