![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
J-Power
这个作者很懒,什么都没留下…
展开
-
并发编程前序之java内存模型(JMM)
本文主要是对深入理解java虚拟机等书籍和各路大神的博客的总结并谈谈自己的理解理解java内存模型之前我们需要先了解以下物理计算机中的并发问题,物理机的并发处理方案对JVM的实现有很大的参考意义。物理机内存架构通过一张图我们看一下物理机硬件内存架构由上图我们可以看到在CPU内部有一组CPU寄存器,寄存器是cpu直接访问和处理的数据,是一个临时放数据的空间。一般CPU都会从内存取数据到...原创 2019-03-28 23:31:29 · 192 阅读 · 0 评论 -
多线程基础学习篇之停止线程
在java中有3种停止线程的方法线程正常退出,也就是当前线程的run方法正常执行完毕后线程终止使用stop方法强行终止线程 不过这个方法已经被废弃使用interrupt()方法中断线程接下来介绍这些方法的优缺点首先介绍interrupt()方法如果仅仅在当前线程调用interrupt()方法其实并不会马上停止该线程,只是在当前线程打了一个终止的标记。可以看以下演示: //...原创 2019-04-08 23:05:11 · 140 阅读 · 0 评论 -
多线程基础学习篇之死锁
讲死锁之前先讲一个转账的例子@Data@AllArgsConstructor@NoArgsConstructorpublic class Account { // 余额 private int balance; // 转账 public void transfer(Account target, int money) { if (this.b...原创 2019-04-12 19:48:32 · 177 阅读 · 0 评论 -
多线程学习篇之等待/通知
等待/通知机制·在总结死锁文章中 为了解决死锁我们用到了循环调用apply()方法,判断是否满足同时能获取到2个资源 (2把锁)这个条件,然后在转账操作结束后调用free()方法 释放2个资源。 代码如下: class Allocator { private List<Object> als = new ArrayList<>(); // 同时申请2个...原创 2019-04-16 18:10:10 · 599 阅读 · 0 评论 -
多线程学习篇之ReentrantLock(相关实现细节)
本文参考:https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/synchronized.mdhttps://www.javadoop.com/post/AbstractQueuedSynchronizer-2java并发编程艺术本篇关于细节上的源码就不仔细探究了,以后再来搞把java5以后提供了Lock接口以及相...原创 2019-04-21 15:47:10 · 150 阅读 · 0 评论 -
多线程学习篇之AQS解析和相关实现
参考:http://www.cnblogs.com/waterystone/p/4920797.html java并发编程艺术AQS 即 AbstractQueuedSynchronizer(队列同步器)第一次看到这个类 一脸懵逼, 它其实就是一个抽象类,它是用来构建锁和其他同步组件的基础框架。如果我们想实现一个自定义的lock锁 CustomLock 只需要在它里面定义一个继承了这...原创 2019-04-19 14:01:17 · 234 阅读 · 0 评论