【发布时间】:2013-03-17 17:06:42
【问题描述】:
我有一种情况,我想初始化一些静态的“常量”(即初始化后不修改)数据结构。我在“静态{}”代码块中执行此操作。是否保证此代码块永远不会被执行两次?在某些特殊情况下我需要同步吗?
更新:部分答案在Are Java static initializers thread safe?
问题仍然存在:如何多次执行静态初始化程序?这有关系吗?我猜它对于不同的静态“实例”运行不止一次,即。在不同的 webapp 上下文中并附加到不同的类加载器,这样它们就不会“看到”彼此。对吗?
【问题讨论】:
-
每个静态初始化程序在每个初始化类的类加载器中只运行一次。这些初始化中的每一个都在静态字段的不同副本上运行。
标签: java static synchronization initialization