CopyOnWriteArrayList的底层原理是怎样的?
1:首先Copy OnWriteArrayList内部也是用数组来实现的,在向Copy OnWriteArrayList添加元素时,会复制一个新数组,写操作在新数组进行,读操作在原数组进行。
2:写操作会加锁,防止出现并发写入丢失数据的问题。
3:Copy OnWriteArrayList允许在写操作来读取数据,大大提高了读的性能,因此适合读多写少最少的应用场景,但是Copy OnWriteArrayList会比较占内存,同时可能读到的数据不是实时最新的数据,所以不适合实时性要求很高的场景。
什么是字节码?采用字节码的好处是什么?
编译器(javac)将源码文件编译成字节码文件,可以做到一次编译到处运行,windows上编译好的class文件,可以直接在linux上运行,通过这种方式做到跨平台,不过Java的跨平台有一个前提条件,就是在不同的操作系统上安装的JDK或JRE是不一样的,虽然字节码是相同的,但是需要把字节码解释成各个操作系统的机器码,只需要不同的解释器,所以针对各个不同的操作系统需要不同的JDK或JRE。
采用字节码的好处:一方面实现了跨平台,另外一方面也提高了代码的性能,编译器在编译代码时可以做一些编译器的优化,比如锁清除,标量替换,方法内联等。