多线程
文章平均质量分 61
coder_xiaoyou
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
12_Synchronized与Lock的区别
Synchronized与Lock的区别原始构成Synchronized是关键字,属于JVM层面,monitorenter(底层是通过monitor对象来完成,其实wait与notify等方法也依赖于monitor对象,只有在同步块或同步方法中才能调用wait或notify等方法)Lock是具体类(java.util.concurrent.locks.Lock),是API层面的锁使用方法Synchronized 不需要用户手动释放锁,当Synchronized代码执行完毕后,系统会自行让线原创 2022-04-11 09:01:29 · 174 阅读 · 0 评论 -
11_死锁编码与定位分析
死锁编码与定位分析死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源产生死锁。排查死锁的方法:jps命令定位进程号:jps -l号:jps -ljstack找到死锁:jstack pid...原创 2021-07-15 13:59:06 · 216 阅读 · 0 评论 -
08_线程通信
线程通信1. CountDownLatch让一些线程阻塞,直到另一些线程完成一系列操作后才被唤醒。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用的线程会被阻塞。其他线程调用countDown方法会将计数器减一(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。CountDownLatch是一个计数的锁,在构造函数中指定计数的初始值。之后通过调用countDownLatch()方法,来此值减少。原创 2021-07-15 13:46:03 · 161 阅读 · 0 评论 -
07_线程中的锁
线程中的锁5.1 乐观锁与悲观锁乐观锁与悲观锁是一种广义上的概念,是从不同角度来看待线程同步操作。这两种锁在 Java 语言以及数据库中都有对应的具体实现。乐观锁:在并发操作时,乐观锁认为不会有其他线程来修改当前自己待修改的数据,因此乐观锁不会对数据加锁,只是在修改数据的时候,判断一下当前的数据有没有被别的线程修改。如果数据没有被修改,当前线程就会更新数据;如果数据已经被别的线程修改,则根据不同的实现方式执行不同的操作(重试或报错)。乐观锁在 java 中是通过无锁编程实现的,最常用的算法是 CAS原创 2021-07-15 13:45:11 · 260 阅读 · 0 评论 -
06_线程安全的集合类
线程安全的集合类4.1 线程不安全示例private static void testConcurrentModificationException() { List<String> list = new ArrayList<>(); for (int i = 0; i < 100; i++) { new Thread(() -> { list.add(UUID.randomUUID().toString());原创 2021-07-15 13:44:37 · 183 阅读 · 0 评论 -
05_原子类
原子类3.1 ABA问题主内存中存在变量V1,值为AThread1获取主内存中的变量V1的值并对其进行操作,操作一次时间时10秒钟。Thread2获取主内存中的变量V1的值并对其操作,操作一次是2秒钟。Thread2将V1的值由A变为B,并写回主内存Thread2再次获取变量V1的值,并将其改回为A,写回主内存Thread1操作完成,比较自己操作前的拷贝值与现在主内存中的值,发现没有变化,并将新的值写回主内存在Thread1操作的过程中,Thread2修改过两次变量V1的值,然而Thread原创 2021-07-15 13:43:56 · 169 阅读 · 0 评论 -
04_CAS
CAS2.1 CAS: CompareAndSwapCAS的全称是Compare-And-Swap,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS并发原语体现在JAVA语言中就是sun.misc.Unsafe类中的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这只一种完全依赖于硬件的功能,通过它实现了原子操作。由于CAS是一种系统原语,原语属于操作系统用语范围,是由若干条指令组成的,用于完成某个功能原创 2021-07-15 13:41:29 · 165 阅读 · 0 评论 -
02_多线程进阶
JUC 多线程与高并发一、Volatile 关键字定义:Volatile 是 Java 虚拟机提供的轻量级同步机制,其特点是:保证可见性禁止指令重排序不保证原子性1.1 Java 内存模型JMM(Java 内存模型 Java Memory Model,简称 JMM)本身是一种抽象的概念,并不真实存在,它描述的是一种规范或规则,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM 关于同步的规定:线程解锁前,必须把共享变量的值刷新回主内存线原创 2021-07-15 12:41:25 · 229 阅读 · 1 评论 -
01_多线程基础
多线程1.课程目标什么是并发与并行什么事进程与线程线程创建线程生命周期线程安全问题什么是线程安全问题线程安全问题的解决方案线程死锁死锁的必要条件如何避免死锁线程通讯Java内存模型线程三大特性多线程控制类容器类线程池2.什么是并发与并行**并行:**指两个或多个事件在同一时刻发生(同时发生)。例如:在一台具有多核cpu的计算机上,不同Cpu同时处理不同的进程,不同CPU之间互不影响。**并发:**指两个或多个事件在同一时间段内发生。例如:在同一原创 2021-07-15 12:00:36 · 211 阅读 · 0 评论
分享