首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >说一个列表被内部锁定是什么意思?

说一个列表被内部锁定是什么意思?
EN

Stack Overflow用户
提问于 2013-02-21 00:38:29
回答 4查看 462关注 0票数 4

这段代码来自《Effective》一书

代码语言:javascript
复制
Object[] snapshot = list.toArray();// Locks list internally

我主要对这里的评论感兴趣。它会使列表成为unmodifiable吗?说一个列表被内部锁定是什么意思?这个锁有多长时间?有没有更好的方法将列表转换为数组?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-21 00:40:29

我可以想象,这意味着列表不会维护对返回数组的引用,这意味着可以修改数组,而不会影响原始列表。同样,对列表的任何修改都不会反映在数组中。

这在线程安全方面很重要,因为这意味着您可以从线程安全的角度对列表的内容进行迭代,而不必担心另一个线程会同时更改列表的sttae。从这个意义上说,列表的状态在返回的数组中是“锁定的”,无论之后对列表做了什么更改--您都可以看到它是一个快照。

toArray();不会改变列表的状态,所以它不会使列表不可修改或类似的东西。

票数 3
EN

Stack Overflow用户

发布于 2013-02-21 00:51:29

就像其他人说的,我认为这是关于并发性的:

文本来自java.uitl.List的javadoc

返回的数组将是“安全的”,因为此列表不维护对它的引用。(换句话说,该方法必须分配一个新的数组,即使该列表由一个数组支持)。因此调用者可以自由地修改返回的数组。

票数 2
EN

Stack Overflow用户

发布于 2013-02-21 00:44:33

它是关于线程安全的--从列表到数组的转换将是线程安全的

编辑:

以最简单的方式-您可以将其视为

  • Thread one正在转换列表时->数组Thread one未完成转换

之前,不允许其他线程更改列表

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14985141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档