首页 技术 正文
技术 2022年11月18日
0 收藏 851 点赞 4,474 浏览 646 个字

synchronized和RetreenLock锁区别

1、synchronized是java关键字,RetreenLock是个java类

2、synchronized无法获取锁状态,Lock可以判断是否持有锁

3、synchronized会自动释放锁,Lock需要在finally中unlock()手动释放锁

4、使用synchronized,线程1获取锁,线程2只能等待;使用Lock,线程1获取锁,线程2会尝试获取锁,如果获取不到,不会一直等待,可以直接结束。

5、synchronized不可重入,不可中断,而Lock可重入,可中断

6、synchronized适合代码量少的同步,Lock适合大量代码同步

volitale和synchronized的区别

  • volitale关键字提供了一个功能,就是被其修饰的变量在被修改后会被强制刷入到主内存中,

    其他处理器的缓存由于遵守了缓存一致性原则,会把这个变量的值从主内存中加载到自己的

    缓存中,因此在并发编程中保证了变量的可见性。

  • volitale关键字会禁止指令重排,从而来保证有序性
  • volitale关键字不能保证原子性
  • synchronized可以保证原子性,通过字节码指令monitorenter和monitorexit。
  • synchronized可以保证可见性
  • synchronized关键字保证同一时刻只允许一条线程操作,从而保证了有序性

PS:多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看到修改后的值,这就是可见性。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,103
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,579
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,427
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,199
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,834
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,917