
Java并发
文章平均质量分 92
打架不行的二哈
点点关注,点个赞,会让作者元气满满的哦
展开
-
并发三大问题与volatile关键字,CAS操作
序言 先来看如下这个简单的Java类,该类中并没有使用任何的同步。 final class SetCheck { private int a = 0; private long b = 0; void set() { a = 1; b = -1; } boolean check() { return ((b == 0) || (b == -1 && a == 1)); } } 如果是在一个串行执行的语言中,执行SetCheck类中的check方法永远不会返回原创 2020-07-15 19:29:25 · 333 阅读 · 0 评论 -
并发基础与Java多线程
一、多线程的优点 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 1、资源利用率更好案例 方式1 从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要14秒 1 5秒读取文件A2 2秒处理文件A3 5秒读取文件B4 2秒处理文件B5 ---------------------6 总共需要14秒 方式2 从磁盘中读取文件的时候,大部分的CPU非常的空闲。它可以做一些别的事情。通过改变操作的顺序,就能够更好的使用CPU资源。看下面的顺序: 1原创 2020-07-14 13:44:47 · 104 阅读 · 0 评论 -
JUC的核心类AQS详解
AQS 结构 先来看看 AQS 有哪些属性,搞清楚这些基本就知道 AQS 是什么套路了,毕竟可以猜嘛! // 头结点,你直接把它当做 当前持有锁的线程 可能是最好理解的 private transient volatile Node head; // 阻塞的尾节点,每个新的节点进来,都插入到最后,也就形成了一个链表 private transient volatile Node tail; // 这个是最重要的,代表当前锁的状态,0代表没有被占用,大于 0 代表有线程持有当前锁 // 这个值可以大于 1原创 2020-07-06 20:10:32 · 485 阅读 · 1 评论