public static void main(Sting args[]){
Object a=null;
new Thread(){
a=new xxx()
}.start();
new Thread(){
a=new xxx()
}.start();
}
想问,xxx()方法里有复杂的对象初始化逻辑,new关键字创建对象,是原子性的吗?如果不是,会不会就出现了对象初始化错乱的问题?
没明白你的意思,如果我猜得不错的话:
这完全取决于你的构造方法里面的具体的逻辑,毕竟代码是人写的。
输出:
另一个例子,构造器中包含同步块,每一个线程都需要等待前面的线程执行完成后才能执行。
输出:
建议参考线程安全的单例模式
不具有,比如构造方法中写了多条逻辑,在执行构造方法时,是可以中断的。
“原子性”这种描述太抽象,楼主提问的时候最好不要认为所有人对某个词的认识都完全一样。我只能说构造方法是线程安全的,对于每一个对象,构造方法只会被执行一次,只会被一个线程执行。