基于 Java 类加载的特性,我们通常会将一些期望只执行一次且不需要上下文的代码(例如 SDK 初始化)放到类的静态代码块中,通过触发类加载来执行这些代码,这样就不需要考虑线程安全问题以及重复执行问题。
在启动优化中就频繁采用了这种方案来将一些主线程耗时逻辑转移至异步线程并提前执行,为了避免不必要的耦合,我们通常是通过 Class.forName("com.aaa.bbb") 的方式来触发类加载,但是这种写法要求对应的类必须 keep 住,避免被混淆导致找不到类。
55
Technology
lddgo
Shared on
2024-01-17