李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java锁--自旋锁简介
Leefs
2020-02-24 AM
1958℃
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://lilinchao.com/archives/641.html
上一篇
Java锁--读写锁简介
下一篇
Java锁--可重入锁和递归锁简介
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
ajax
人工智能
Java工具类
ClickHouse
GET和POST
SpringBoot
Docker
查找
JVM
高并发
Map
DataX
DataWarehouse
CentOS
机器学习
SpringCloudAlibaba
递归
Spark Core
VUE
FastDFS
Typora
gorm
算法
Spring
散列
Spark RDD
Spark Streaming
栈
序列化和反序列化
Sentinel
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭