首页 > 代码库 > 深表浅表拷贝
深表浅表拷贝
深表拷贝意指堆中的内容也会拷贝,浅表拷贝是指栈中内容拷贝(共享拷贝源的堆指针)。
JDK里面只是提供了浅拷贝,比如System.array.copy就是一例。如果想要实现深度拷贝需要将对象进行序列化,然后再进行反序列化获取对象,此时是深度拷贝。
但是既然JDK里面没有提供深度拷贝,那也意味着其实深度拷贝应用的场景也不是很多。比如我们碰到了一个例子:某个List是共享出去的多线程不安全,此时会有定时任务List进行遍历,然后将满足条件的元素进行删除。分析到此处有两类线程来操作该List:定时任务以及用户程序;实现机制是通过CopyOnWrite对象来对List内容进行浅表拷贝,获取一个新的栈对象,然后,发现不满足条件的,对原List进行删除。这样就避免了遍历删除异常。
其实采用Iterator的方式可以实现边遍历,边删除;两个线程对同时对一个队列又读又写还是不靠谱,现在各自操作各自的队列,影响最小。
深表浅表拷贝
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。