最新消息:20210917 已从crifan.com换到crifan.org

【整理】java的synchronized关键字的含义

Java crifan 1618浏览 0评论

之前看java代码,看到有个synchronized,不了解其含义。

所以去查查。

 

参考:

java synchronized详解 – Gang.Wang – 博客园

Java关键字synchronized详解 – JavaCrazyer的ItEye(codewu.com)技术博客 – ITeye技术网站

深入JVM锁机制1-synchronized – 老码农的专栏 – 博客频道 – CSDN.NET

简单说就是:

synchronized是Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

具体的含义是:

代表这个方法或代码块加锁,相当于不管哪一个线程A每次运行到这个方法或代码块时,都要检查有没有其它的线程正在用这个方法或代码块。

有的话要等正在使用这个方法的线程B(或者C,D)运行完这个方法后再运行此线程A

没有的话,直接运行。

 

最常见的写法是:

public void methodAAA()
{
    synchronized (this)      // (1)
    {
        //your synchronized code
    }
}

 

而关于该关键字的具体含义,多个线程之间如何起效果等等深入的问题,此处看了点资料,但是觉得还是有点晕。

暂时不去深究了。等需要研究的时候再去研究吧。

 

另外:

Synchronized和java.util.concurrent.locks.Lock的区别

参考:

深入Synchronized和java.util.concurrent.locks.Lock的区别详解_java_脚本之家

主要相同点:Lock能完成Synchronized所实现的所有功能。

主要不同点:Lock有比Synchronized更精确的线程予以和更好的性能。
Synchronized会自动释放锁,但是Lock一定要求程序员手工释放,并且必须在finally从句中释放。

转载请注明:在路上 » 【整理】java的synchronized关键字的含义

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
89 queries in 0.207 seconds, using 20.09MB memory