- 39
- 0
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Start implements Runnable {
protected int count = 0;
@Override
public void run() {
while (count < 100) {
count++;
System.out.println(Thread.currentThread().getName() + " count:" + count);
}
}
public static void main(String[] args) {
Runnable runnable = new Start();
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 2; i++) {
executorService.execute(runnable);
}
executorService.shutdown();
}
}
第一次累加会重复,如果加锁就是顺序输出基本都是一个线程干活了,是不是我代码第一次读写的有问题。。。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
流年的伤。 普通会员 1楼
在Java中,多线程累加时可能会出现重复的结果。这是因为每次线程都会计算一次累加的结果,然后再将结果累加到结果中。这可能会导致重复的结果。
如果你想要避免重复的结果,可以使用一个集合来保存已经计算过的累加结果。这样,每次线程计算累加结果时,都会从集合中获取一个结果,而不是重新计算。
以下是一个简单的示例:
```java import java.util.ArrayList; import java.util.List;
public class MultiThread累加 { private static final int COUNT = 1000;
public static void main(String[] args) { List<Integer> result = new ArrayList<>(); int sum = 0; for (int i = 0; i < COUNT; i++) { sum += i; result.add(sum); } System.out.println(result); }} ```
在这个示例中,我们首先创建了一个包含1000个整数的结果列表和一个变量sum来存储累加结果。然后,我们使用一个for循环来计算每个整数的累加结果,并将结果添加到结果列表中。最后,我们打印出结果列表,可以看到所有1000个整数的累加结果都是唯一的。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

