码迷,mamicode.com
首页 > 其他好文 > 详细

Syncrhonized 和 Lock的区别和使用

时间:2019-04-13 23:23:11      阅读:516      评论:0      收藏:0      [点我收藏+]

标签:public   except   就是   活性   print   可读性   condition   初学   cat   

相信很多小伙伴们初学多线程的时候会被这两个名次搞晕,所以这里专门介绍这两种实现多线程锁的方式的区别和使用场景

Syncrhonized

这个关键词大家肯定都不陌生,具体的用法就是使用在对象、类、方法上

  • 当使用在对象和对象方法上的时候,就会获取相应的对象锁
public syncrhonized void method() {
    // do something
}
  • 当使用在类、类属性、类方法上的时候,就会获取相应的类对象锁
public class A {
    pubilc void method() {
        syncrhonized(A.class) {
            // do something
        }
    }
}

用法大概就是上面这两种了
使用syncrhonized方法的好处就是很简单,上锁解锁都是自动完成的,代码的可读性也是很好的
但是,万事都有利弊,syncrhonized的简单必然会导致他的灵活性会比较差
尤其是当我们想用到多个锁的时候,或者一个锁有多个条件的时候,这种方法都是难以实现的

所以下面我将介绍本文的主角,Lock对象

Lock

Lock本身是一个接口,有兴趣的小伙伴可以查看源码
在JDK中只有ReenterLock实现了Lock,而这个ReenterLock也就是我们常听到的重入锁
那么如何使用Lock呢,Lock又有哪些好处呢,下面一一道来
Lock的使用需要手动上锁解锁的

Lock lock = new ReenterLock();
lock.lock();
try {
    //do something
} catch(IntruptException e) {
    e.printStack();
} finally {
    lock.unlock();
}

看起来麻烦了很多,但是麻烦是有回报的
首先,我们可以很自由的获取和释放锁
其次,我们可以通过使用Condition来更加灵活地控制一个锁
未完待续....

Syncrhonized 和 Lock的区别和使用

标签:public   except   就是   活性   print   可读性   condition   初学   cat   

原文地址:https://www.cnblogs.com/Nocturne/p/10703445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!