社区
Java SE
帖子详情
synchronized实现何时使用了自旋锁还是互斥锁?
weichuang002
2012-08-23 10:17:45
怎么网上两种说法都有呢?
JVM规范有没有规定?
...全文
484
7
打赏
收藏
synchronized实现何时使用了自旋锁还是互斥锁?
怎么网上两种说法都有呢? JVM规范有没有规定?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weichuang002
2012-08-26
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
互斥锁 是指锁的类型
自旋锁 是指锁的实现方式
互斥锁可以用自旋来实现,自旋也可以去实现非互斥锁
[/Quote]
这个要顶,够专业。
戏子
2012-08-24
打赏
举报
回复
第一次见这个东西,跟踪学习下
龙四
2012-08-24
打赏
举报
回复
互斥锁 是指锁的类型
自旋锁 是指锁的实现方式
互斥锁可以用自旋来实现,自旋也可以去实现非互斥锁
龙四
2012-08-24
打赏
举报
回复
这里有相关资料:
http://www.ibm.com/developerworks/cn/java/j-jtp10185/
龙四
2012-08-24
打赏
举报
回复
这两个完全不是相同的概念
互斥锁,一般的synchronized,ReentrantLock就是互斥锁,ReadWriteReentrantLock中的写锁也是互斥锁,读锁不是互斥锁。
当线程需要获取锁的时候,而此时锁不可用,该线程就需要等待,这个等待该如何实现呢?
1、用循环不断的轮询锁的状态,锁可用的时候就退出。这就是
自旋锁
,众所周知,这样里面基本不做什么事情的循环是非常耗CPU的,如果等待锁的时间很长,用这种方式是不合适的
2、利用操作系统的指令,让线程等待,当锁可用时,让线程醒过来。这种适合需要等待长时间的。如果等待的时间短,这个操作是非常耗时的。
JVM可以统计某个锁之前的等待时间,从而选择使用自旋锁还是使用操作系统指令。不过很多JVM还是使用保守的方式,大部分时候并不采用自旋锁
关于使用什么锁,jvm是没有规定的。jvm只是规定当要获得的互斥锁不可用的时候,线程需要等待。
weichuang002
2012-08-23
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
互斥锁
[/Quote]
有没有什么Java/JVM标准文档里面有概述呢? 给个下载地址吧,谢谢
scbb
2012-08-23
打赏
举报
回复
互斥锁
synchronized
的
实现
用了
自旋锁
还是
互斥锁
?
这两个完全不是相同的概念
互斥锁
,一般的
synchronized
,ReentrantLock就是
互斥锁
,ReentrantReadWriteLock中的写锁也是
互斥锁
,读锁不是
互斥锁
。 当线程需要获取锁的时候,而此时锁不可用,该线程就需要等待,这个等待该如何
实现
呢? 1、用循环不断的轮询锁的状态,锁可用的时候就退出。这就是
自旋锁
,众所周知,这样里面基本不做什么事情的循环是非常耗CPU
自旋锁
和
互斥锁
实例_线程安全:
互斥锁
和
自旋锁
(10种)
原标题:线程安全:
互斥锁
和
自旋锁
(10种)作者丨Darielhttps://www.jianshu.com/p/a321377c5639 无并发,不编程.提到多线程就很难绕开锁????.iOS开发中较常见的两类锁:1.
互斥锁
: 同一时刻只能有一个线程获得
互斥锁
,其余线程处于挂起状态.2.
自旋锁
: 当某个线程获得
自旋锁
后,别的线程会一直做循环,尝试加锁,当超过了限定的次数仍然没有成功获得锁时,线程也...
自旋锁
互斥锁
java_Java并发编程——深入理解
自旋锁
1.什么是
自旋锁
自旋锁
(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,
使用
这种锁会造成busy-waiting。2.Java如何
实现
自旋锁
?先看一个
实现
自旋锁
的例子,java.util.concurrent包里提供了很多面向并...
iOS 多线程面试题(
自旋锁
与
互斥锁
)
自旋锁
与
互斥锁
自旋锁
: 是一种用于保护多线程共享资源的锁,与一般
互斥锁
(mutex)不同之处在于当
自旋锁
尝试获取锁时以忙等待(busy waiting)的形式不断地循环检查锁是否可用。当上一个线程的任务没有执行完毕的时候(被锁住),那么下一个线程会一直等待(不会睡眠),当上一个线程的任务执行完毕,下一个线程会立即执行。 在多CPU的环境中,对持有锁较短的程序来说,
使用
自旋锁
代替一般的
互斥锁
往...
CAS
自旋锁
与
互斥锁
优劣分析
加锁的目的只有一个就是保证共享资源在任意时间内,只有一个线程可以访问,以此避免数据共享导致错乱的问题。
自旋锁
和
互斥锁
只是通过不同的方式对锁进行
实现
。锁没有对的只有合适的。
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章