aks*_*hay 8 java methods thread-safety
我从同步方法中调用noonsynchronized方法是否是线程安全的?
我有两种方法如下:
public class MyClass{
void synchronized doSomething1(){
doSomething2();
}
void doSomething2(){
//will this block of code be synchronized if called only from doSomething1??
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
如果doSomething2()仅从中调用doSomething1(),那么它将仅由单个线程调用单个实例MyClass.它仍然可以通过不同的实例同时从不同的线程调用 - 所以如果它作用于任何可能不是特定于实例的共享数据MyClass,它仍然不能保证修复所有线程问题.
基本上,您需要仔细考虑多个线程使用的任何可变共享状态 - 如果您需要可变共享状态,则没有简单的修复方法.在您的特定情况下,你还就需要作出肯定的是doSomething2()仅从叫做doSomething1()-这将意味着使它私人下手...