- 博客(12)
- 收藏
- 关注
原创 Future获取子线程的执行结果
获取子线程的执行结果future和CallableRunnable的缺陷@FunctionalInterfacepublic interface Runnable { public abstract void run();}不能返回一个返回值不能抛出checked ExceptionCallable接口类似于Runnable,被其他线程执行的任务实现call方法,有返回值@FunctionalInterfacepublic interface Callable<
2020-05-16 17:38:35
1562
原创 并发灵魂AQS
并发灵魂AQSSemaphore,CountDownLatch,ReentrantLock 内部有一个Sync类,Sync类继承了AQSAQS内部原理分析AQS最核心的三大部分state控制线程抢锁和配合FIFO队列期望协作工具类去实现的获取/释放等重要方法state private volatile int state;state的具体含义,会根据具体实现类的不同而不同Semaphore里,它标识"剩余的数量"countDownLatch里,表示"还需要倒数的数量"
2020-05-14 16:06:17
138
原创 线程协作,控制并发流程(CountDownLatch,Semaphore,Condition,CyclicBarrier)
线程协作,控制并发流程控制并发流程的工具类,作用就是帮助我们更容易得让线程之间合作,让线程之间相互配合,来满足业务逻辑常见并发控制工具类CountDownLatch 计数器countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了主要方法介绍CountDownLatch(int count)
2020-05-12 10:35:45
313
原创 原子性CAS小结
什么是CAS应用在并发场景,实现线程安全的算法,同时也是一个CPU的指令(compareAndSwap)。我认为V的值应该是A, 如果是的话我就把他改成B,如果不是A(说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错CAS有三个操作数:内存值V,预期值A,要修改的值B. 当且仅当预期值A和内存V相同时,才将内存值修改为B,否则什么都不做,最后返回现在的V值java中如何利用CAS实现原则操作AtomicInteger加载Unsafe工具,用来直接操作内存数据用Unsa
2020-05-09 15:03:13
202
原创 理解 springBoot-springApplication之运行阶段
springApplication运行阶段运行阶段就是SpringApplication.run()的阶段public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; Collection<SpringBootEx
2020-05-09 01:35:09
135
原创 理解 springBoot-springApplication之准备阶段
SpringApplication 基本使用SpringApplication 运行SpringApplication.run(SpringBootApplication.class, args)自定义 SpringApplication通过 SpringApplication API 调整SpringApplication springApplication = new SpringApplication(DiveInSpringBootApplication.class);Set<S
2020-05-08 19:33:28
128
原创 从spring手动装配到spring boot自动装配
spring boot自动装配spring 的手动装配Spring 模式注解装配模式注解是一种用于声明在应用中扮演 "组件"角色的注解。模式注解举例装配方式context:component-scan 方式<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframewor...
2020-05-07 16:41:05
185
原创 Executors线程池知识点总结
线程池的自我介绍思考如果不使用线程池,我们可能需要每次任务都新开一个线程来处理。如果只有一个线程public class oneThread { public static void main(String[] args) { Thread thread = new Thread(new Task())![在这里插入图片描述](https://img-bl...
2020-05-06 22:14:00
225
原创 threadLocal使用的两大场景
threadLocal两大使用场景每次线程需要一个独享的对象实现线程安全的SimpleDateFormat######第一版(两个线程获取时间)两个线程调用SimpleDateFormat 获取日期字符串public class SimpleDateFormatThreadLocal { public static void main(String[] args...
2020-05-06 22:10:18
278
原创 Atomic原子类使用总结
原子类的概念java.util.concurrent.atomic不可分割一个操作是不可中断的,即便是多线程的情况下也可以保证原子类的作用与锁类似,是为了保证并发情况下线程安全。原子类的优势粒度更细原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细粒度的情况,通常锁的粒度都要大于原子变量的粒度效率更高使用原子类的效率会比使用锁的效率更高...
2020-05-06 22:07:07
1015
原创 quartz
基本特性使用任务动态调度集群部署原理过滤不需要的日期重复执行为什么不生效多线程为什么会退化成单线程怎么kill掉进程里面的某一个线程任务跑完怎么给管理员发信息quartz的角色 包工头 工人 项目经理spring task 模块什么时候用任务调度还款日提醒 固定时间的跑批 大量数据的处理隔半个小时打包一次 两个数据的解欧触发的规则规则的集中配置...
2020-04-07 09:06:20
81
原创 01-工厂模式(factory)
工厂模式老衲将简单工厂模式,工厂方法模式,抽象工厂模式统一为工厂模式。因为这三种模式之间是有关联的,工厂方法模式,抽象工厂模式只是解决了简单工厂的某种缺点而已。所以大家只要了解了简单工厂模式的优点,缺点以及能够codeing出简单工厂模式,相信对于掌握后两种模式不成问题只需要关心产品创建的工厂 不需要关心细节不要让自己的大脑记忆太多东西,只记忆导火索就行。对于工厂模式来说,简单工厂...
2020-02-15 23:56:10
161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人