gpt4 book ai didi

java - 如何并行执行同步代码?

转载 作者:行者123 更新时间:2023-12-02 02:19:08 26 4
gpt4 key购买 nike

假设我有以下代码:

synchronized(someObject) {
//do something
}

据我所知,如果someObject不是final的,当它被重新赋值为另一个值时,而synchronized block 内有一个线程,它可能会导致并行执行。

我的问题是,除了上述情况之外,还有其他方法可以在不同线程中同时执行同步代码吗?

最佳答案

如果方法 doSomething() 未同步,并且另一个线程直接调用它而不是通过您的 synchronized 语句,那么是的,您可以在该方法中拥有两个线程相同的代码。

如果您需要防止这种情况,请使 doSomething() 同步。如果它与您显示的代码不在同一个类中,那么您需要防止它被访问,除非通过示例中的 synchronized 语句。

如果您可以保证它无法通过 synchronized 语句以外的任何其他方式访问(可调用,即私有(private)),那么您就是安全的,除非有人诉诸反射(并且没有设置安全管理器策略)以防止发生)。通过反射,恶意开发人员可以绕过保护并直接调用该方法。但您可能不需要担心这一点,您还没有指定这是否是一个问题。

关于java - 如何并行执行同步代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781364/

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