public static void main(Sting args[]){
Object a=null;
new Thread(){
a=new xxx()
}.start();
new Thread(){
a=new xxx()
}.start();
}
想問,xxx()方法裡有複雜的對像初始化邏輯,new關鍵字創建對象,是原子性的嗎?如果不是,會不會就出現了物件初始化錯亂的問題?
沒懂你的意思,如果我猜得不錯的話:
這完全取決於你的構造方法裡面的具體的邏輯,畢竟程式碼是人寫的。
輸出:
另一個例子,構造器中包含同步區塊,每一個執行緒都需要等待前面的執行緒執行完成後才能執行。
輸出:
建議參考線程安全的單例模式
不具有,例如在構造方法中寫了多個邏輯,在執行構造方法時,是可以中斷的。
「原子性」這種描述太抽象,樓主提問的時候最好不要認為所有人對某個字的認識都完全一樣。我只能說構造方法是線程安全的,對於每一個對象,構造方法只會被執行一次,只會被一個線程執行。