https://www.jianshu.com/p/6456af2a7c5d[https://www.jianshu.com/p/6456af2a7c5d] 1、锁的分类 自...
HashMap HashMap的本质是一个可变长度的数组,在数组中每个位置保存的是一个Entry节点,该节点存储有hash、key、value、next等信息。Java7中的...
ThreadLocal ThreadLocal是一个为线程提供线程局部变量的工具类。它的思想也十分简单,就是为线程提供一个线程私有的变量副本,这样多个线程都可以随意更改自己线...
spring与线程安全 Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决...
多线程并发最佳实践 使用本地变量 应尽量使用本地变量,而不是创建一个类或实例的变量 使用不可变类 不可变类比如String、Integer等一旦创建,不再改变,不可变类可以降...
单例模式 保证被创建一次,节省系统开销。 Spring 中的 Bean 默认都是单例的 工厂模式 解耦代码。 简单工厂:用来生产同一等级结构中的任意产品,对于增加新的产品,无...
线程池 image.png使用线程池的优点:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立...
阻塞队列:当线程队列是空时,从队列中获取元素的操作将会被阻塞;当线程队列是满时,往队列里添加元素的操作将会被阻塞。Java 5 开始出现存在 java.util.concur...
Fork/Join Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。类似...
Callable 、Future、FutureTask Futuretask是JUC下的一个组件,针对对线程结果的处理有两种创建多线程的方式:一个是继承Thread类,另一个...
八、AQS(AbstractQueuedSynchronizer) 从JDK1.5开始,引入了java并发包JUC,JUC大大提高了java的并发性能,而AQS就是JUC的核...
四、Atomic AtomicInteger AtomicInteger的 incrementAndGet()里用了unsafe的类的getAndAddInt(),getAn...
三、线程安全策略 1、不可变对象 有一种对象发布了就是安全的,它就是不可变对象在某些情况下,将不会修改的对象,设计成不可变对象,来让对象在多个线程间,是线程安全的。 1.1、...
二、线程基础 1、进程与线程的区别 进程:是系统进行分配和管理资源的基本单位 线程:进程的一个执行单元,是进程内调度的实体、是CPU调度和分派的基本单位,是比进程更小的独立运...
五、可见性 1、volatile 结果总是不满5000,证明volatile修饰共享变量不能保证线程安全。原因是volatile不能保证原子性 六、有序性 七、安全发布对象 ...
分析线程问题时常用的命令jpsjstack [pid]jconsole java并发包 JUC 原子性:locks、aotmic可见性、有序性:volatile 并发模拟 i...