java - 这应该是同步方法吗?

标签 java multithreading synchronization parallel-processing testng

我正在使用 TestNG 并行运行测试,并希望注意帮助程序类和实用程序可能出现的同步问题。据我所知,每个测试都是它自己的对象,由测试运行者透明地创建。因此,我不需要担心同步任何非静态的东西,因为它是在线程中创建的对象,因此对其他对象不可见。

但是,当我调用我写的这个外部日志函数时,它需要同步吗?是否存在线程 1 进入并设置 threadName="Thread-1",然后线程 2 进入并设置 SAME threadName 变量 = "Thread-2",然后线程 1 恢复并打印的可能竞争条件“--foo | 线程 2”?我需要将其设为同步方法吗?

public static void log(String _message) {
  String threadName = Thread.currentThread().getName();
  log.println("--" + _message + " | Thread: " + threadName);
}

最佳答案

您的变量 threadName 是一个局部变量每个线程都有一个实例,更准确地说,每个函数调用都有一个实例。这意味着它们不会相互影响。

关于java - 这应该是同步方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426565/

相关文章:

java - 为什么 maven-failsafe-plugin 不显示执行的 Restful 测试?

java - 如何排除旧版本的maven依赖并使用它的新版本?

java - 如何在 J2EE EJB 中创建互斥锁

synchronization - 在java中,有没有其他方法可以在不使用 'synchronized'关键字的情况下同步类或方法?

java - IIS 在性能和可伸缩性方面与企业 Web 应用程序的 weblogic 和 websphere 相比如何?

java - OpenCV - 安卓 : java. lang.IllegalArgumentException: bmp == null

python - 是否可以并行读取网络摄像头帧?

c# - 从另一个线程填充 ListView

java - 纯 Java : How do i know if my thread is sleeping or not?

c++ - 在 C++ 中从不同的线程写入文件