如果你对多线程没什么了解,那么从入门模块开始。 如果你已经入门了多线程(知道基础的线程创建、死锁、synchronized、lock等,并不代表后面不讲,只是后面需要有基础才好深入),那么从juc模块开始。(点此跳转 ) 入门模块 基本概念解释 程序:静态代码,一串指令的集合 进程:资源分配的单位 ...
分类:
其他好文 时间:
2020-06-21 15:37:16
阅读次数:
46
视频选集 1/39 P11、JUC课程介绍 P22、唠嗑:线程和进程 P33、唠嗑:回顾多线程 P44、传统的Synchronized锁 P55、Lock锁 P66、Synchronized和Lock区别 P77、传统的生产者消费者问题、防止虚假唤醒 P88、Lock版的生产者消费者问题 P99、C ...
分类:
其他好文 时间:
2020-06-21 11:34:33
阅读次数:
194
Semaphore (JDK) 我们使用semaphore去限制获取特定资源的并发线程数量。 下面的例子中,我们实现了一个简单的登录队列来限制登入系统的用户数量: class LoginQueueUsingSemaphore { private Semaphore semaphore; public ...
分类:
其他好文 时间:
2020-06-18 23:25:29
阅读次数:
86
在并发环境下,我们经常使用的集合类(List、Map、Set)其实都是不安全的。 集合不安全问题之List List在单线程的情况下是安全的,但是多线程的情况下是不安全的,我们来看两段代码: 单线程 public class UnsafeList1 { public static void main ...
分类:
其他好文 时间:
2020-06-18 01:36:15
阅读次数:
64
JUC简介 利用多线程提高效率,尽可能的利用cpu资源。java5以前多线程同步用了sychronized、volatile。在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池 ...
分类:
其他好文 时间:
2020-06-18 01:35:21
阅读次数:
62
讲解线路: CAS-->UnSafe-->CAS底层思想-->ABA-->原子引用更新-->如何规避ABA问题 CAS是什么 CAS的全称为Compare-And-Swap,即比较并交换,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。 C ...
分类:
其他好文 时间:
2020-06-18 01:30:32
阅读次数:
83
ABA问题的产生 CAS会导致“ABA问题”。 CAS算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差类会导致数据的变化。 比如说一个线程1从内存位置V中取出A,这时候另一个线程2也从内存中取出A,并且线程2进行了一些操作将值变成了B,然后线程2又将V位置的数据 ...
分类:
其他好文 时间:
2020-06-18 01:29:16
阅读次数:
84
学习方法 学习技术的方法都很类似,大部分都有着类似的步骤: 场景 需求 解决方案 应用 原理 并发的目的 充分利用CPU 和 I/O资源 提高效率 并发的维度 分工 同步/协作 互斥 分工 线程池 fork/join future Guarded Suspension 保护性暂挂模式 Balking ...
分类:
其他好文 时间:
2020-06-12 00:48:24
阅读次数:
45
一、什么是单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访 ...
分类:
其他好文 时间:
2020-06-06 21:34:57
阅读次数:
85
1、synchronized关键字的同步方法 包括两种用法:synchronized方法和synchronized块,synchronized控制对象的访问,每一个对相对应一把锁,每一个synchronized方法都必须获得带哦用该方法对象的锁才能执行,否则线程会阻塞,方法一旦执行,就独占该锁,直到 ...
分类:
编程语言 时间:
2020-06-01 10:25:52
阅读次数:
62