码迷,mamicode.com
首页 > 其他好文 > 详细

深表浅表拷贝

时间:2017-06-11 14:18:13      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:任务   条件   copy   一个队列   序列化   机制   tor   list   sys   

深表拷贝意指堆中的内容也会拷贝,浅表拷贝是指栈中内容拷贝(共享拷贝源的堆指针)。

JDK里面只是提供了浅拷贝,比如System.array.copy就是一例。如果想要实现深度拷贝需要将对象进行序列化,然后再进行反序列化获取对象,此时是深度拷贝。

但是既然JDK里面没有提供深度拷贝,那也意味着其实深度拷贝应用的场景也不是很多。比如我们碰到了一个例子:某个List是共享出去的多线程不安全,此时会有定时任务List进行遍历,然后将满足条件的元素进行删除。分析到此处有两类线程来操作该List:定时任务以及用户程序;实现机制是通过CopyOnWrite对象来对List内容进行浅表拷贝,获取一个新的栈对象,然后,发现不满足条件的,对原List进行删除。这样就避免了遍历删除异常。

其实采用Iterator的方式可以实现边遍历,边删除;两个线程对同时对一个队列又读又写还是不靠谱,现在各自操作各自的队列,影响最小。

深表浅表拷贝

标签:任务   条件   copy   一个队列   序列化   机制   tor   list   sys   

原文地址:http://www.cnblogs.com/xiashiwendao/p/6985026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!