李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java锁--自旋锁简介
Leefs
2020-02-24 AM
1427℃
0条
# Java锁--自旋锁简介 ### 一、概念 自旋锁(spinlock):是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。 **代码实现** ```java public class SpinLockDemo { AtomicReference
atomicReference = new AtomicReference<>(); public void myLock(){ Thread thread = Thread.currentThread(); System.out.println(Thread.currentThread().getName()+"\t myLock()"); while(!atomicReference.compareAndSet(null,thread)){ } } public void myUnlock(){ Thread thread = Thread.currentThread(); atomicReference.compareAndSet(thread,null); System.out.println(Thread.currentThread().getName()+"\t myUnlock()"); } public static void main(String[] args) { SpinLockDemo spinLockDemo = new SpinLockDemo(); new Thread(()->{ spinLockDemo.myLock(); try { TimeUnit.SECONDS.sleep(5); }catch (InterruptedException e){ e.printStackTrace(); } spinLockDemo.myUnlock(); },"t1").start(); try { TimeUnit.SECONDS.sleep(1); }catch (InterruptedException e){ e.printStackTrace(); } new Thread(()->{ spinLockDemo.myLock(); try { TimeUnit.SECONDS.sleep(1); }catch (InterruptedException e){ e.printStackTrace(); } spinLockDemo.myUnlock(); },"t2").start(); } } ``` **运行结果** ```java t1 myLock() t2 myLock() t1 myUnlock() t2 myUnlock() ```
标签:
并发编程
,
锁
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/641.html
上一篇
Java锁--读写锁简介
下一篇
Java锁--可重入锁和递归锁简介
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
SpringBoot
DataX
栈
JVM
Spark Streaming
线程池
Ubuntu
Sentinel
MyBatisX
正则表达式
Kibana
SpringCloud
Linux
Golang
前端
Flume
ClickHouse
MyBatis-Plus
数学
链表
DataWarehouse
FileBeat
人工智能
Beego
序列化和反序列化
JavaSE
Filter
MyBatis
Hive
Nacos
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞