gpt4 book ai didi

java - 哪个线程正在初始化静态字段?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:11:25 24 4
gpt4 key购买 nike

哪个线程正在初始化静态字段和静态 block ?从我的实验中我得出结论,它与“调用”线程相同,即

class Foo {
static {
System.err.printf("static {}: %s\n", Thread.currentThread());
}
}

public class Mini_StaticInitialization {
public static void main(final String[] args) {
System.err.printf("main: %s\n", Thread.currentThread());
new Foo();
}
}

输出

main:        Thread[main,5,main]
static {}: Thread[main,5,main]

是否有任何限制或总是如此?

最佳答案

通常静态字段在首先初始化类的线程中初始化,但我认为 JLS 中没有指定。

通常也是加载类的同一个线程,但不一定。

JLS 最相关的部分可能是 12.4.2. Detailed Initialization Procedure :

Because the Java programming language is multithreaded, initialization of a class or interface requires careful synchronization, since some other thread may be trying to initialize the same class or interface at the same time.

暗示(但不声明或要求)初始化发生在导致类需要初始化的线程中。

关于java - 哪个线程正在初始化静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19444616/

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