繁体   English   中英

如果我从我的synchronized方法调用非同步方法是非同步方法线程安全吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM