int B = 0
和isReady=true
不会在编译时改变顺序。注意这里是机器级代码的重排序。JDK基于具体系统来作的,如内核线程、用户线程、用户线程加轻量进程混合等。java
初始化后就不会改变数组
如Vector这样的容器,虽然get()、size()、add()等有synchronized关键字,可是实际使用时仍是须要额外的同步(能够是针对容器对象自己的synchronized)保障。
缘由是,Vector的线程安全,指的是其对应方法不可打断。可是在多线程环境下,多个方法按顺序执行时,仍有可能产生非预期的行为。
举例:对于非空Vector,记为v,多个线程同时执行remove(v.size()-1)
,有可能发生数组越界。安全
(实际是第11章的内容)
运行期优化,判断一个对象是否会逃逸到方法外或其余线程。若是不会逃逸,对应的优化手段:多线程