Java小强个人技术博客站点    手机版
当前位置: 首页 >> Java

线程安全的List之CopyOnWriteArrayList

9180 Java | 2023-6-29 9:52
ArrayList是线程不安全的,这点毋庸置疑。因为ArrayList的所有方法既没有加锁,也没有进行额外的线程安全处理。而Vector作为线程安全版的ArrayList,存在感总是比较低。因为无论是add、remove还是get方法都加上了synchronized锁,所以效率低下。无意中看到掘金中有人写了这样一遍文章(我花了两天时间没解决的问题,chatg......查看详细

SpringMVC 文件下载的两种方式

21611 Java | 2022-7-29 10:52
现如今又要写一个关于下午的业务,因此再次编写测试用例,总结了两种下载方式。首先介绍一个14年就写的文章,Http断点下载实简单讲解(http://www.javacui.com/java/98.html )基于Spring的ResponseEntity/**  * SpringMVC方式  */ @GetMapp......查看详细

Java中双重检查锁(double checked locking)

42150 Java | 2022-7-20 9:37
双重检查锁(Double-Check Locking),顾名思义,通过两次检查,并基于加锁机制,实现某个功能。在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的getInstance1()错误代码:public class Singleton {     private ......查看详细

Java自定义类的加载器

22591 Java | 2022-2-14 23:19
Java程序在运行的时候,JVM通过类加载机制(ClassLoader)把class文件加载到内存中,只有class文件被载入内存,才能被其他class引用,使程序正确运行起来.Java中的ClassLoader有三种:Bootstrap ClassLoader 、Extension ClassLoader、App ClassLoader。1. Bootst......查看详细

静态代码块、构造代码块、构造方法的执行顺序

22600 Java | 2022-2-14 21:03
执行顺序是:先执行“静态代码块”,再执行“构造代码块”,最后执行“构造方法”。静态代码块是类级别的,而构造代码块和构造方法是实例级别的,因而静态代码块先执行;又因构造代码块是独立的,必须依附载体才能运行,因而构造代码块需放到构造方法前。静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行。执行顺序......查看详细

Java之SimpleDateFormat

24530 Java | 2022-2-11 13:15
在多线程环境下,当多个线程同时使用相同的SimpleDateFormat对象(如static修饰)的话,如调用format方法时,多个线程会同时调用calender.setTime方法,导致time被别的线程修改,因此线程是不安全的。SimpleDateFormat类内部有一个Calendar对象引用,它用来储存和这个SimpleDateFormat相关的日......查看详细

Java之LinkedHashMap

16650 Java | 2022-2-11 11:20
LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变,LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者......查看详细

Seata之AT 模式的使用

34860 Java | 2022-2-7 22:20
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。经过多年沉淀与积累,商业化产品先后在阿里云、金融云进行售卖。2019.1 为了打造更加完善......查看详细