gpt4 book ai didi

Java同步写 block

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:30 24 4
gpt4 key购买 nike

我是java新手,我有一个关于Synchronized的问题。

我有以下用于写入网络的代码(目前简单实现):

public void networkSendData(byte[] data){

try {

out.write(data);
out.flush();

} catch (IOException e) {


}
}

我想知道是否需要在这里进行 block 级同步,因为我正在一次写入整个数据。或者有可能出现竞争条件吗?我问这个问题是因为要写入的数据来自多个来源。

谢谢。

最佳答案

根据您的示例,不需要有 synchronized block ,除非多个线程要访问相同的 out 变量。

换句话说,如果您有多个线程同时调用networkSendData,则应该同步该方法。您不希望一个线程调用 flush,而另一个线程正在执行 write 方法。

public synchronized void networkSendData(byte[] data)

您还需要确保没有线程正在访问/修改 out 变量的值,而另一个线程可能位于 networkSendData 方法中。

这取决于接收写入数据的服务器如何处理它。如果使用多个线程根据写入服务器的内容来更新共享可变变量,则需要实现线程安全。

关于Java同步写 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2834223/

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