1.初始化
初始化块在构造器执行之前执行,类初始化阶段先执行最顶层父类的静态初始化块,依次向下执行,最后执行当前类的静态初始化块;创建对象时,先调用顶层父类的构造方法,依次向下执行,最后调用本类的构造方法。
执行顺序:
父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数
初始化过程:
初始化父类中的静态成员变量和静态代码块 ;
初始化子类中的静态成员变量和静态代码块 ;
初始化父类的普通成员变量和代码块,再执行父类的构造方法;
初始化子类的普通成员变量和代码块,再执行子类的构造方法;
2.类方法中可以直接调用对象变量?
不能,静态方法中不能调用对象的变量,因为静态方法在类加载时就初始化,对象变量需要在新建对象后才能使用
3.当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?
CyclicBarrier
CountDownLatch 是等待一组线程执行完,才执行后面的代码。此时这组线程已经执行完。
CyclicBarrier 是等待一组线程至某个状态后再同时全部继续执行线程。此时这组线程还未执行完。
4.list是一个ArrayList的对象,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?
Iterator 支持从源集合中安全地删除对象,只需在 Iterator 上调用 remove() 即可。这样做的好处是可以避免
ConcurrentModifiedException ,当打开 Iterator
迭代集合时,同时又在对集合进行修改。有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove()
方法是个安全的做法。