gpt4 book ai didi

java - 微调 Java 同步块(synchronized block)行为

转载 作者:行者123 更新时间:2023-11-30 02:45:03 25 4
gpt4 key购买 nike

我有两个同步代码块。我需要两个代码块不能在两个或多个不同的线程中同时运行,但我希望允许两个或多个不同的线程运行一个同时处理代码块。在 Java 中如何做到这一点?举例说明:

class HelloWorld {

method1() {
synchronized (?) { //block 'A'
//I want to allow 2+ threads to run this code block simultaneously
}
}

method2() {
synchronized (?) { //block 'B'
//this should block while another thread is running
//the synchronized block 'A'
}
}

我不希望两个同步块(synchronized block)都锁定同一对象/类,因为这将不允许第一个 block 同时由多个线程运行。然而,这是我所知道的防止 block A 和 B 由 2 个或更多线程同时运行的唯一方法。必须有一种方法来实现这一目标。

最佳答案

我建议查看ReadWriteLock分别是实现类ReentrantReadWriteLock 。这个东西是专门为允许多个“读者”线程而设计的;但只有一个“作家”线程。

如果我正确地阅读了您的问题,这正是您所要求的。另一方面,退后一步并详细说明您正在尝试解决的真正问题也可能是明智的。

特别是考虑到上述锁在 Java8 上运行良好,但在早期版本的 Java 中出现了问题。

关于java - 微调 Java 同步块(synchronized block)行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40430825/

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