gpt4 book ai didi

java - 一般 synchronizedList 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:59:27 29 4
gpt4 key购买 nike

我有一个关于同步列表的一般性问题。
可以说在构造函数中我正在创建一个列表

List synchronizedList = Collections.synchronizedList(list);

我有一个方法可以将一个对象添加到列表中。

public void add(String s){ 
synchronizedList.add(s)
}

还有另一个线程每隔几秒检查一次是否有几行,将其转储到一个文件并全部删除。

现在假设我迭代每一行并将其保存到数据库中。在所有迭代之后,我清除了列表。

多线程支持对我有何帮助?
我可以在另一个线程中的 clear() 发生之前向列表中添加一个元素。
除非我自己管理锁(我真的不需要同步列表)它自己。

最佳答案

Collections 返回的同步列表对您的情况没有帮助。只有当您需要保证对单个方法调用的串行访问时,它才有用。如果您需要围绕更大的一组操作进行同步,则需要将该代码手动包装在 synchronized block 中。 Javadoc状态:

It is imperative that the user manually synchronize on the returned list when iterating over it.

如果您的列表在其他地方使用,您至少可以保护它免受单独的方法调用,否则这些方法将不是线程安全的。但是,如果您完全管理列表,则只需将 synchronized block 添加到 add 方法中,并使用迭代它时将使用的相同锁。

关于java - 一般 synchronizedList 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6107012/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com