李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java锁--自旋锁简介
Leefs
2020-02-24 AM
1352℃
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
43
标签云
字符串
Hive
MySQL
FileBeat
nginx
Kibana
Java阻塞队列
Spark Streaming
数学
Beego
SpringCloudAlibaba
Java工具类
Azkaban
Jenkins
Linux
Java编程思想
Spark SQL
DataX
序列化和反序列化
Netty
JavaWEB项目搭建
微服务
工具
Tomcat
SpringBoot
Thymeleaf
DataWarehouse
Nacos
持有对象
Eclipse
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞