Nar*_*hai 14 java multithreading thread-safety method-parameters
Class Shared{
public void sharedMethod(Object o){
//does something to Object
}
}
//this is how threads call the shared method
run(){
sharedInstance.sharedMethod(someObject);
}
Run Code Online (Sandbox Code Playgroud)
现在将o作为参数传递给方法.多个线程并行调用相同的方法.我们可以安全地说这段代码是线程安全的吗?
有两种情况:
someObject在线程之间共享someObject MD *_*med 13
不,你不能这么说.方法参数是线程本地的,这意味着每个方法都有自己的o引用变量副本.但是如果你用多个线程中的同一个对象调用这个方法,那么参数将在它们之间共享(请记住,Java是传递的)值).在这种情况下,您需要提供显式同步以避免麻烦.
| 归档时间: |
|
| 查看次数: |
6117 次 |
| 最近记录: |