![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
铁汉柔情li
怀才就像怀孕一样,时间久了才会显出来。
展开
-
多线程并发AQS源码分析
一、业务场景描述业务场景,银行中存在一个办理业务的窗口,A、B、C三个用户(线程)去办理业务,先是A用户去窗口办理业务,然后B、C在等候区排队等候,过一会儿,A用户(线程)办理完业务,B用户(线程)去业务窗口办理业务,以此类推C用户一样。二、分析之前上分析图三、源码分析#(1)A线程开始工作,第一步调用lock方法public void lock() { sync.lock(); }#其中:sync继承 AbstractQueuedSynchron.原创 2021-09-26 15:22:48 · 217 阅读 · 0 评论 -
JUC-volatile 的三个特性
1.可见性2.禁止指令重排3.不保证原子性原创 2020-12-01 11:07:04 · 108 阅读 · 0 评论 -
java输出线程时,显示Thread[main,5,main],中括号里的三个值分别代表什么?
1. 实例代码public class SpinLockDemo { public static void main(String[] args) { Thread thread = Thread.currentThread(); System.out.println("当前线程名字:"+ thread); }}2.运行结果3.说明[线程名称, 线程优先级, 线程所属线程组]...原创 2020-11-30 10:02:15 · 3330 阅读 · 0 评论 -
Java并发编程JUC之手写自旋锁
自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。/** * 自旋锁 */public class SpinLockDemo { AtomicReference<Thread> atomicReference = new AtomicReference<Thread&g原创 2020-11-29 20:53:29 · 222 阅读 · 2 评论 -
多线程中乐观锁和悲观锁是什么意思?
悲观锁悲观锁就是将资源锁住,等一个之前获得锁的线程释放锁之后,下一个线程才可以访问。乐观锁通过一种不加锁的方式来处理资源,比如通过给记录加version来获取数据,性能较悲观锁有很大的提升,CAS就属于乐观锁。...原创 2020-11-17 11:05:09 · 299 阅读 · 0 评论 -
【多线程】单例模式与多线程
什么是单例;个人理解 单例单例就是单个实例,单例模式就是想办理最后只创建一个实例。这就是最终的目的。理解了这句话之后我们可以真实开启下面的内存单例模式与多线程立即加载/“恶汉模式”就是在调用方法前,实例已经创建了来看测试代码MyObjectpublic class MyObject { private static MyObject myObje...原创 2020-04-04 20:29:24 · 158 阅读 · 0 评论 -
【多线程】线程间通信
等待通知机智的实现方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码行处停止执行,直到接到通知或被中断为止。在调用wait()之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法。在执行wait()方法后,当前线程释放锁。如果调用wait...原创 2020-04-02 18:13:05 · 194 阅读 · 0 评论 -
【多线程】对象及变量的并发访问
synchronized同步方法方法内的变量为线程安全“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全问题”,所得的结果也就是“线程安全”的了。实例变量非线程安全如果两个线程同时操作业务对象中的实例变量,则有可能出现“非线程安全”问题。HasSellPrivateNumpublic class HasSellPrivat...原创 2020-03-27 07:40:31 · 133 阅读 · 0 评论 -
【多线程】Java 多线程技能
概念区分线程和进程进程——>.exe程序,进程是受系统操作管理的基本单元线程:可以理解成是在进程中独立运行的子任务。使用多线程的优点:可以最大限度地利用CPU的空闲时间来处理其他任务使用多线程也就是在使用异步。使用多线程实现方式1.继承Thread类public class MyThread extends Thread{ @Ove...原创 2020-03-24 08:22:16 · 94 阅读 · 0 评论 -
并发工具使用【CountDownLatch,CyclicBarrier】--代码示例
1.CountDownLatch 的使用应用场景:等待已知数量的线程执行完后 ,在唤醒当前的主线程的应用场景,比如:查询所有航空公司的机票,多个线程单独执行查询单个航空公司的机票,所有的单个线程结束后,环境主线程,将结果输出。相当于计数器进行减的操作实例代码:package com.lhj;import java.util.ArrayList;import...原创 2019-09-05 22:30:38 · 151 阅读 · 0 评论