Java线程-使函数与线程中的多个返回值同步

问题描述 投票:1回答:2

这只是一个概念:

  • 我想通过在多个线程中运行的函数来更新int。
  • 我的函数随机选择一个int并检查它是否大于现有int。
  • 如果是这样,它将更新变量。

如何确保我的值永不冲突或我的函数正在查看尚未更新的旧值?

我是线程新手,所以任何信息都是有价值的。

java multithreading thread-safety
2个回答
0
投票

这是AtomicInteger的工作!

AtomicInteger atomic;
...
int newValue = atomic.accumulateAndGet​(rand, Math::max);

0
投票

如何确保我的价值观永不冲突

如果需要询问,那么我会说,使用同步块:

final Object lock = new Object();
int global_r = 0;
...
while (true) {
    int r = random.nextInt();
    synchronized(lock) {
        if (r > global_r) {
            global_r = r;
            break;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.