JUC多线程
文章平均质量分 86
-星雨-
缘不知所起
展开
-
多线程、死锁
多线程1. 为什么要使用多线程?使用多线程可能带来什么问题?2. 造成线程死锁的原因有哪些?2.1 产⽣死锁必须具备以下四个条件:2.2 如何避免线程线程死锁呢? 1. 为什么要使用多线程?使用多线程可能带来什么问题? 使用多线程是为了提高程序的执行效率和运行速度。 但是如果使用不当的话,不仅不能提高执行效率,还会造成很多问题,比如:线程不安全、内存泄露,死锁等。 2. 造成线程死锁的原因有哪些? 线程死锁:多个线程同时被阻塞,他们中的一个或者多个都在等待某个资源被释放。由于线程被无限期阻塞,因此程序不可能原创 2021-05-28 17:14:08 · 78 阅读 · 0 评论 -
Java的锁
Java的锁1. 公平锁(按顺序排队)和非公平锁(抢占式排队)1.1 是什么1.2 两者区别1.3 小总结2. 可重入锁(递归锁)2.1 递归锁是什么2.2 ReentrantLock/Synchronized 就是一个典型的非公平可重入锁3. 自旋锁(spinlock)3.1 原理代码3.3 插曲--Thread.sleep和TimeUnit.SECONDS.sleep4. 独占锁(写锁)/共享锁(读锁)/互斥锁4.1 概念4.2 代码 1. 公平锁(按顺序排队)和非公平锁(抢占式排队) 1.1 是什么转载 2021-05-12 13:34:41 · 114 阅读 · 0 评论 -
run和start
/** * @author LanceQ * @version 1.0 * @time 2021/4/26 19:51 */ public class Boom extends Thread{ public static void main(String[] args) { Boom boom = new Boom(); boom.run();//无输出 boom.start();//输出下面的start()方法 } publi原创 2021-04-30 22:47:55 · 244 阅读 · 0 评论 -
笔记之synchronized 关键字的了解
synchronized 关键字的了解1. synchronized的三种使用方法1.1 修饰实例方法1.2 修饰静态方法1.3 修饰代码块2. 总结3. “单例模式了解吗?4. 额外 synchronized 解决的是多个线程访问资源的同步性问题,synchronized 可以保证被它修饰的方法或者代码块在同一时间只有一个线程可以执行。 另外,在 Java 早期版本中, synchronized 属于 重量级锁,效率低下。 为什么呢? 因为监视器锁(monitor)是依赖于底层的操作系统的 M原创 2021-04-25 14:54:22 · 135 阅读 · 0 评论 -
笔记之CAS的了解
笔记之CAS的了解1、compareAndSet2、CAS底层原理?对Unsafe的理解2.1 atomicInteger.getAndIncrement();2.2 Unsafe2.3 CAS是什么3. CAS缺点 1、compareAndSet 原子性的++可以用到的是 AtomicInteger.conpareAndSet(int expect, indt update) 方法。 其底层的方法如下,该方原创 2021-04-22 14:07:03 · 106 阅读 · 0 评论 -
笔记之volatile的理解
笔记之volatile的理解1.volatile是java虚拟机提供的轻量级同步机制1.1 可见性1.2 不保证原子性1.3 禁止指令重排2. JMM(java内存模型)3. 在那些地方用过volatile 1.volatile是java虚拟机提供的轻量级同步机制 有以下的三大特点:可见性、防止指令重排、不保证原子性 1.1 可见性 保证可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看到修改的值。 import java原创 2021-04-20 16:23:24 · 248 阅读 · 1 评论