多线程系列
文章平均质量分 55
念殊15
这个作者很懒,什么都没留下…
展开
-
在new对象中,使用spring bean对象2021-10-23
一、背景 https://www.jianshu.com/p/4c0723615a52 创建ApplicationContextUtil,是为了能在java new的对象中,使用getBean方法,方便获取bean对象。 二、用法 /** @Lazy(value=true) 使用该对象的时候再加载ApplicationContextUtil 会减少springIoc启动时候消耗的时间 **/ @Component @Lazy(value=true) public class ApplicationConte原创 2021-10-23 15:28:17 · 875 阅读 · 0 评论 -
CountDownLatch的使用(简略总结)
文章目录Q:为什么要使用CountDownLatch? Q:为什么要使用CountDownLatch? 有两个原因 (1)可以将异步操作转换为同步,为线程的执行安排顺序 案例是:主线程和异步子线程,比如主程序等待整个框架服务启动环境配置好后,再启动服务。 (2)实现多个线程开始执行任务的并行性,并行性,指的是多个线程在同一时间执行,比如同时开始执行一个计算任务。 具体参考:链接描述 ...原创 2021-06-29 13:50:23 · 103 阅读 · 0 评论 -
ThreadLocal变量的使用
这里写自定义目录标题Q:为什么要使用ThreadLocal?ThreadLocal该怎么使用?创建两个类ThreadLocal的原理 Q:为什么要使用ThreadLocal? 可以让多个线程共享一个变量,使用该变量的值,但是没有办法做到变量的同步。 ThreadLocal该怎么使用? 一个简单的小例子 创建两个类 MyRunnable: package com.kk.ThreadLocalTest; public class MyRunnable implements Runnable{ //原创 2021-06-29 11:41:31 · 566 阅读 · 0 评论 -
延迟初始化带来的并发错误
目录,Q:为什么会出现延迟初始化Q:延迟初始化带来的并发错误是什么?A:有两种解决方案解决方案1.使用volatile禁止重排序解决方案2.基于类的初始化的同步机制(扩展)那么哪时候会进行类的初始化呢?(详解)类初始化中的同步处理机制第一阶段(竞争获得初始化锁)第二阶段(进行类的初始化和静态变量的初始化)第三阶段:线程A设置class的state为initialized,并唤醒锁中condition中的所有线程,释放持久化锁第四阶段:线程B结束类的初始化处理过程(说明)解决方案2的使用场景 Q:为什么会出现原创 2021-06-27 17:09:18 · 157 阅读 · 0 评论