我从我的同步方法中调用了 noonsynchronized 方法,它是线程安全的吗?
我有如下两种方法:
public class MyClass{
void synchronized doSomething1(){
doSomething2();
}
void doSomething2(){
//will this block of code be synchronized if called only from doSomething1??
}
}
最佳答案
如果 doSomething2()
仅从 doSomething1()
调用,则它只会被单个线程调用用于 的单个实例我的类(class)
。它仍然可以通过不同的实例同时从不同的线程调用 - 所以如果它作用于任何可能不是特定于 MyClass
实例的共享数据,它仍然不能保证修复所有线程问题。
基本上,您需要仔细考虑多线程使用的任何可变共享状态 - 如果您需要可变共享状态,则没有简单的修复方法。在您的特定情况下,您还需要确定 doSomething2()
仅从 doSomething1()
调用 - 这意味着它私有(private)开始...
关于java - 如果我从我的同步方法调用非同步方法是非同步方法线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537885/