
java并发编程
七英里的旅行
最怕一生碌碌无为,还说平凡难道可贵。
展开
-
并发编程总结之多线程基础
线程安全 当多个线程访问访问某一个类(对象或方法)时,这个类或对象或方法始终能表现出正确的行为或我们想要的结果,那么这个类(对象或方法)就是线程安全的。 synchronized:可以在任意的对象及方法上加锁,而加锁的这段代码称之为互斥区或者临界区。代码示例说明1运行main方法,main方法里有5个线程t1到t5,同一时间启动去访问MyThread类的Run方法。1...转载 2019-03-07 17:40:00 · 167 阅读 · 0 评论 -
并发编程总结之synchronized细节问题
摘要:本节主要介绍了并发编程下怎么避免数据脏读和什么是synchronized的可重入锁,synchronized的可重入锁的几种使用场景下,是线程安全的。以及一些细节的synchronized使用问题和synchronized常见代码块示例Code可以直接Copy运行。 脏读 什么是脏读:对于对象的同步和异步方法,我们在设计程序,一定要考虑问题的整体性,不然会出现数据不一致的错误,...转载 2019-03-07 18:20:09 · 318 阅读 · 0 评论 -
可见性丶原子性和有序性
先说一下概念:可见性:一个线程对共享变量的修改,另外一个线程能够立刻感知到,我们称为可见性;原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性;有序性:指令重排导致顺序被打乱; 线程工作内存: 是指 Cpu 的 ‘寄存器’ 和 ‘高速缓存’,线程的 working memory 是cpu的寄存器和高速缓存的抽象描述,数据读取顺序优先级 是:寄...原创 2019-03-28 18:34:23 · 379 阅读 · 0 评论 -
Java线程生命周期和锁的简单使用
本文介绍了java线程的生命周期,Synchronized的几个方法简单的使用。线程生命周期初始状态(New)New Thread之后, 就绪状态(Ready)表示获取到了Cpu的执行时间片,也就是cpu的执行权,等待开始执行。 运行状态(Runable)执行start之后,开始运行。 阻塞状态(Blocked)在进入sync...原创 2019-08-14 17:18:23 · 277 阅读 · 0 评论 -
多线程的宏观和微观视角
首先我们在做并发编程的的时候会考虑到原子性丶可见性和有序性,在宏观上会考虑到安全性丶活跃性和性能;微观视角可见性:一个线程对共享变量的修改,另外一个线程能够立刻感知到,我们称为可见性;原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性;有序性:就是我们代码的执行顺序,依赖等。(指令重排导致顺序被打乱); 线程工作内存: 是指 Cpu 的 ‘寄存器’ ...原创 2019-08-14 17:20:12 · 449 阅读 · 0 评论 -
AbstractQueuedSynchronizer源码解析
AQS是什么?AQS是什么,相信大家都不陌生这个题目,那么AQS到底是什么呢? AQS的全称是 Abstract Queued Synchronizer, 从字面意思理解也就是 抽象队列同步器 ,实际上AQS确实就是排队同步队列 , 也是一个抽象类,需要 自定义 同步队列中 可执行权 的 获取和释放中的逻辑(重新定义获取和释放语义),也就是重写 tryAcquire tryRelease tr...原创 2019-10-10 17:17:32 · 359 阅读 · 0 评论