- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 窥探CAS
到此为止,我们已经从应用层到CPU指令看到了一个基于CAS的完整demo,相信你也对CAS有了一些理解,本篇文章只能带你浅浅窥探一下CAS的基本概念和原理,激起你对知识的渴望,想深入了解还需要我们自身实践以及了解更多的资料。addAndGet方法调用了Unsafe(Java 不能直接访问操作系统底层,而是通过本地方法来访问,Unsafe类提供了硬件级别的原子操作)中的getAndAddInt方法。简单介绍了三种锁,其中提到自旋锁的实现是通过CAS来实现的,今天就来浅浅的窥探一下CAS的实现原理。
2023-03-16 08:30:00
119
原创 简述Sychronized的偏向锁、轻量级锁、重量级锁
线程在获取锁的过程中,不会去阻塞线程,也就没有所谓的唤醒线程,阻塞和唤醒这两个步骤都是需要通过操作系统去进行实现的,比较消耗时间。自旋锁是通过CAS来获取预期的一个标记,如果没有获取到则继续获取,直到获取到时则结束自旋,这个过程中线程一直在运行中,相对而言并没有占用太多操作系统资源,比较轻量。当一个线程获取到锁后,此时这把锁是偏向锁,如果有第二个线程来竞争锁,那么偏向锁会升级为轻量级锁,通过自旋来实现,不会阻塞线程。如果轻量级锁自旋次数过多且仍未获取到锁,则升级为重量级锁,重量级锁会阻塞线程。
2023-03-15 21:29:08
185
1
原创 由生产者消费者模型引出的线程同步问题及解决方案
由生产者消费者模型引出的线程同步问题及解决方案基本生产者消费者模型:代码示例:数据模型:/** * Created by IntelliJ IDEA. * * @Author: ZhangDong * @Date: 2019/9/9 16:00 */public class Message { private String tittle; private St...
2019-09-09 21:14:18
662
原创 创建线程的方式及优缺点和关系图
创建线程的方式及优缺点和关系图创建线程的3种方式一、 Thread类创建线程1. 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。2. 创建Thread子类的实例,即创建了线程对象。3. 调用线程对象的start()方法来启动该线程。二、通过Runnable接口创建线程1. 定义runnable接口的实...
2019-08-22 21:59:03
282
原创 如何从GitHub上下载开源项目
作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。GitHub上有无数优秀开发者正在开发和维护的开源项目供大家学习与讨论,那么如何把大佬开源的项目clone到本地进行学习呢,下面几步就可以轻松搞定:1.安装Git,下载与安装可以参考这篇文章 Git下载与安装(Windo...
2019-07-24 13:32:49
41704
8
原创 Git下载与安装(Windows系统)
Git是当今最流行的版本控制软件,是开发者不可缺少的高级工具,这里就记录一下Git的安装。下载地址:官网:https://git-scm.com/download/win网盘:https://pan.baidu.com/s/1up0aihm9gcGE2LV5jcSDWw 提取码:hjl4安装包下载好后双击打开1.点击next2.安装位置,根据...
2019-07-24 13:03:30
14737
1
转载 IDEA快捷键大全
IntelliJ Idea 常用快捷键列表Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中
2017-12-25 14:50:24
248
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人