- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到,对 Collection 实例的访问不应在类内同步。原因似乎是另一个对象可能会操纵列表,而不同步到第一个对象。然而,我想要同步的List是一个私有(private)字段,由所有者对象创建,并且没有访问器方法。
我使用两个内部类,一个生产者和一个消费者,每个内部类都实现类 Runnable 并在单独的线程中运行。每当他们访问属于父类的列表时,他们都会在父类上同步。
此外,我的实现仅使用父类的单个实例以及每个内部类。
那么,简单地使用同步块(synchronized block)来控制访问是否可以接受?或者这仍然是禁忌?
我认为我不能使用同步列表。原因是消费者线程批量消费:它首先使用 Collections.Sort 和比较器进行排序,然后使用 subList 方法获取列表中前 20 个(默认)对象的列表(它实际上创建了一个新列表) ,通过将 subList 调用传递给 ArrayList 构造函数),然后将 subList 返回的列表传递给原始列表的removeAll:
Collections.sort(pool, examComparator);
List<Candidate> squad = new ArrayList<Candidate>(pool.subList(0, squadSize));
pool.removeAll(squad);
return squad;
由于这是一个多步骤操作,并且需要是原子的,所以我看不出 synchronizedList 如何促进它,它(据我所知)只是为单个方法调用(例如 add() )提供同步和 get()。
最佳答案
java.util.concurrent
package拥有避免编写自己的代码和重新发明轮子所需的一切。
使用 CopyOnWriteArrayList
完成您的列表实现,工作就完成了。
编写线程安全实现绝对不是一件简单的事,这些类的编写是为了尽可能安全和高效。
如果您有生产者消费者模型,请使用 BlockingQueue。
关于java : Synchronising ArrayList for multiple operations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845392/
我读到,对 Collection 实例的访问不应在类内同步。原因似乎是另一个对象可能会操纵列表,而不同步到第一个对象。然而,我想要同步的List是一个私有(private)字段,由所有者对象创建,并且
我需要决定多线程应用程序之一需要使用多少个计数信号量。我开始知道,如果我们知道同步点,那么我们就可以决定要使用的信号量的数量。什么是同步点? 最佳答案 同步点是执行流中一个线程必须等待其他繁忙线程的位
void Java_Package_Multithreading_againCallReadFile (JNIEnv *env, jobject obj) { if((*env)->Monito
对于我的一个家庭项目,我决定使用 docker 容器和 fig 进行编排(第一次使用这些工具)。 这是我的 fig.yaml: rabbitmq: image: dockerfile/rabbit
user32.dll 的文档 SetParent函数指出 When you change the parent of a window, you should synchronize the UIST
我是 PC 游戏的速通玩家(喜欢以尽可能快的方式完成游戏的人),我想在玩游戏时记录我的输入,以便稍后自动重播。所以我创建了一个小 C# 程序来做到这一点:基本上,它会启动一个计时器,每次我按下/松开一
我正在学习java并发,并使用一个在多人之间共享的银行帐户示例来尝试练习并发原理。 这是我的帐户类(class)。 public class Account(){ private int ba
我已经读过一些关于此问题的文章,但它们看起来很旧(2008 年),我希望有人可能有一个更优雅的解决方案。 我想知道 Expression Engine 开发人员如何使用本地测试和实时环境工作流程。 我
我是 Java 的新手,正在尝试学习同步语句的概念。下面的代码和语句来自 Java tutorial Oracle . 我的问题是,“nameList”变量是实例变量还是类变量?为什么它不包含在 sy
我在将 openWithCompletionHandler: (UIManagedDocument) 与主要事件同步时遇到一个基本问题。 情况:我有一个管理共享 UIManagedDocument 的
在 Grails 应用程序中,我们有一个接口(interface),它接受从单个请求中的参数创建的类似路径的 3 级结构,例如 level1/level2/document 对象 level2引用资料
我是一名优秀的程序员,十分优秀!