在构造函数

时间:2016-02-11 17:40:45

标签: java multithreading

我有以下私人收藏:

final private ConcurrentHashMap<Book,BookLog> booklogMap;

我目前在构造函数中复制如下:

this.booklogMap = new ConcurrentHashMap<Book, BookLog>(booklogMap);

这是在构造函数中创建防御性副本的正确方法吗?如果没有,你如何正确制作一个线程安全的集合的防御副本?

1 个答案:

答案 0 :(得分:5)

this.booklogMap = new ConcurrentHashMap(booklogMap);

这是一个复制构造函数。几乎所有标准的Collection和Map实现都有一个,它通常是克隆简单结构的最简单方法。只要Book和BookLog是不可变的,这就可以正常工作。