之前看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关键字的含义