gpt4 book ai didi

java - 在java线程中执行同步

转载 作者:行者123 更新时间:2023-12-01 13:17:20 24 4
gpt4 key购买 nike

我有一个如下所述的情况,我需要多个客户端来访问我的服务器。我的代码如下。

main(){
new thread(new class()).start();
}

void run(){
xyz();
}

xyz(){
switch(){
case 1:
read()
break;
case 2:
write()
}
}

我想确保 write() 何时由一个线程执行。 read() 不应被阻止。我有很多这样的功能,它们是相互关联的。我如何确保功能同步?我应该删除开关盒并使用同步块(synchronized block)吗?或者还有其他办法吗?

最佳答案

移除开关?但“切换”与同步无关。听起来,也许您真正的问题是要锁定哪些对象、锁定多少对象以及何时锁定。

你说,“我想确保当一个线程执行 write() 时,read() 不应该被阻塞。”

你的代码似乎已经做到了这一点。您没有向我们展示任何可以阻止 read() 调用与 write() 调用同时发生的内容。您想阻止什么?如果您只想防止并发 write() 调用,但不关心与 read() 调用同时发生的情况,那么可能如下所示:

private Object writerLock = new Object();

xyz(...) {
//same as in your example
}

private ... read(...) {
...
}

private ... write(...) {
synchronized(writerLock) {
...
}
}

关于java - 在java线程中执行同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361314/

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