在我的应用程序中,我有两个线程。线程1正在将数据传输到线程2.数据传输完成后,线程1中的数据将在线程2中清除。线程1将以更快的速度在HashMap中放置更多数据,稍后将传输到线程2。同时,线程2完成它需要处理的数据。下面的代码是线程2中线程之间的数据传输发生的部分。整个应用程序工作得很好,但我的问题是,有没有更好的方法来创建线程2的线程1数据的副本,而不使用关键字new来创建一个全新的对象?如何在使用多线程时深度复制散列表
我想这样做可能会导致更多的垃圾收集发生?我不应该担心这个吗?
synchronized(this){
// Make a copy of the data map then clear it.
cachedData = new HashMap<String,ArrayList<Float>>(data);
data.clear();
}
根据您的需要,您可能可以使用某种“Map.Entry”的同步队列来代替地图,以便更持续地传输数据。 – trutheality
我明白了,我回过去看过我的一些旧帖子,删除了一个我认识的笨蛋,然后评价答案。感谢您与我分享这些信息。 –