【发布时间】:2017-05-21 12:55:50
【问题描述】:
在多线程环境中,一个类的静态块是否保证在调用其他静态方法(在同一类中)之前完成?
我的意思不是静态块本身调用其他静态方法。为了澄清,我们可以使用下面的代码块。
外部类能否启动两个线程,这两个线程都调用OurClass.doSomething(),其中一个线程将在静态块完成之前开始执行?
public class OurClass {
static {
// does something that takes a long time
}
public static void doSomething() {
// can I be called before the block has finished?
}
}
【问题讨论】:
-
如果静态块本身调用任何静态方法怎么办?
-
这取决于。请给出一个具体的代码作为例子。
标签: java multithreading static thread-safety