gpt4 book ai didi

java - Java 类加载是单线程的吗?

转载 作者:行者123 更新时间:2023-11-29 03:07:14 24 4
gpt4 key购买 nike

在阅读多线程时,我开始知道单例需要双重锁定检查和单例引用声明为 volatile 以便

  1. 避免了同步开销
  2. 多线程不会意外地创建单例类的多个实例请引用此博客。 http://javarevisited.blogspot.sg/2014/05/double-checked-locking-on-singleton-in-java.html

我心中的问题是,

如果类加载是单线程的,为什么我们关心多线程问题?

静态初始化程序 block 恰好在应用程序生命周期中只执行一次,那么为什么不使用静态初始化程序创建单例呢?

最佳答案

  1. 类加载是not necessarily single threaded .从 Java 7 开始,ClassLoader 可以将自己标记为 parallel capable .
  2. 在静态初始化器中实例化一个单例是可以的。主要缺点是这些初始化是 eager ,而不是 lazy .这可以通过使用 initialization on demand idiom 来缓解.但是请注意,可以通过创建自定义 ClassLoader 来运行静态初始化程序两次。

关于java - Java 类加载是单线程的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31554028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com