在多線程環境中,類的靜態塊保證在其他靜態方法(在同一個類中)被調用之前完成?靜態方法和靜態塊之間的線程安全
我不是說在靜態塊本身調用其他靜態方法的情況下。爲了澄清,我們可以使用下面的代碼塊。
外部類可以啓動兩個線程,兩個線程都會調用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?
}
}
如果靜態塊本身調用任何靜態方法會怎麼樣? – Eran
這取決於。請給出一個特定的代碼作爲例子。 – davidxxx