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

标签 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??
 }

}

最佳答案

如果 doSomething2() 仅从 doSomething1() 调用,则它只会被单个线程调用用于 的单个实例我的类(class)。它仍然可以通过不同的实例同时从不同的线程调用 - 所以如果它作用于任何可能不是特定于 MyClass 实例的共享数据,它仍然不能保证修复所有线程问题。

基本上,您需要仔细考虑多线程使用的任何可变共享状态 - 如果您需要可变共享状态,则没有简单的修复方法。在您的特定情况下,您还需要确定 doSomething2() 仅从 doSomething1() 调用 - 这意味着它私有(private)开始...

关于java - 如果我从我的同步方法调用非同步方法是非同步方法线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537885/

相关文章:

java - 在事件 JavaFX 上创建新的透明阶段

java - 单词计数中Mapper <K1,V1,K2,V2>中K1和K2的用途是什么?

java - 从单独的类运行单独的 JUnit 测试

c++ - 方法和自由函数之间有哪些细微的区别?

xcode - 从另一个类调用方法,而不重新初始化它

c# - 从基类调用子类的新方法

java - java线程安全-集合/列表

Java规范化外部执行的文件路径

multithreading - Delphi简单类型线程安全吗?

java - 基于函数输入的线程 block