数组拷贝方式那个最快
由快到慢分别如下
System.arraycopy():底层使用的是native方法+JVM手写函数,必然最快。
clone(): native方法,并未手写,需要JNI转换,所以次之。
Arrays.copyof() 本方法是调用了上面1的方法。
for() 全是深层复制 ,并且没有封装方法,最慢也是正常的。
2.悲观锁和乐观锁的区别
悲观锁:总是假设共享资源每次被访问时最坏的情况出现。所以共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。
像 Java 中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
悲观锁通常多用于写多比较多的情况下(多写场景),避免频繁失败和重试影响性能。
乐观锁:
乐观锁总是假设最好的情况,认为共享资源每次被访问的时候不会出现问题,线程可以不停地执行,无需加锁也无需等待,只是在提交修改的时候去验证对应的资源(也就是数据)是否被其它线程修改了(具体方法可以使用版本号机制或 CAS 算法)。
在 Java 中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式 CAS 实现的。
乐观锁通常多于写比较少的情况下(多读场景),避免频繁加锁影响性能,大大提升了系统的吞吐量。