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