[英]if i call a non synchronized method from my synchronized method is non synchronized method thread safe?
我从同步方法中调用noonsynchronized方法是否是线程安全的?
我有两种方法如下:
public class MyClass{
void synchronized doSomething1(){
doSomething2();
}
void doSomething2(){
//will this block of code be synchronized if called only from doSomething1??
}
}
如果doSomething2()
只从所谓doSomething1()
那么它只会通过单一实例的单个线程调用MyClass
。 它仍然可以通过不同的实例同时从不同的线程调用 - 所以如果它作用于任何可能不是特定于MyClass
实例的共享数据,它仍然不能保证修复所有线程问题。
基本上,您需要仔细考虑多个线程使用的任何可变共享状态 - 如果您需要可变共享状态,则没有简单的修复方法。 在您的特定情况下,您还需要确保 doSomething2()
仅从doSomething1()
调用 - 这意味着将其作为私有开始...
Thread
on the of the of MyClass
. 当调用doSomething1()
, Thread
在MyClass
的上。 在该线程的执行退出doSomething1
,锁定将保留,如果它进入doSomething2
则包括。 这将导致其他线程在尝试锁定时阻塞。
请记住: synchronized
不是线程安全的。
更多信息:
如果doSomething2()
仅仅是从所谓的doSomething1()
则是-它是线程安全的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.