gpt4 book ai didi

java - 多线程 - 使用相同的属性创建线程,而不是正确的循环

转载 作者:行者123 更新时间:2023-12-01 09:34:44 25 4
gpt4 key购买 nike

我有一个品牌列表,我想为每个对象设置品牌特定属性并运行它的线程。

但是,当我运行以下代码时...它会创建同一品牌的多个线程并遗漏几个品牌。

brightCoveVideoInfoPullerThread 是一个可运行的类。在此目的中,我通过 BrightCoveAPIParam 添加品牌特定属性。

for (int i = 0; i < brands.size(); i++) {
String brand = brands.get(i);
brightCoveVideoInfoPullerThread.setBrightCoveAPIParam(properties.get(brand));
Thread t = new Thread(brightCoveVideoInfoPullerThread,
"BrightCovePullerThreadFor" + brand);
t.start();
}

例如

HEALTHCOM 的 Brightcove 轮询器

HEALTHCOM 的 Brightcove 轮询器

FOODANDWINE 的 Brightcove 轮询器

FOODANDWINE 的 Brightcove 轮询器

最佳答案

您在循环的每次迭代中重复使用 brightCoveVideoInfoPullerThread 的相同实例。使用 setter 更改该实例的属性将更新所有线程的属性,因为所有线程都运行同一个实例。

在循环内创建它的新实例,以便每个线程都有自己的实例:

for (String brand : brands) {
BrightCoveVideoInfoPullerThread brightCoveVideoInfoPullerThread = new ...;
brightCoveVideoInfoPullerThread.setBrightCoveAPIParam(properties.get(brand));

Thread t = new Thread(brightCoveVideoInfoPullerThread, "BrightCovePullerThreadFor" + brand);
t.start();
}

关于java - 多线程 - 使用相同的属性创建线程,而不是正确的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39099165/

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