【发布时间】:2016-06-27 15:07:18
【问题描述】:
我想知道在Java中处理成员参数时线程安全是否已经发挥了作用。
假设你有一个 API 的方法
boolean moreThanTen(long value) {
if(value > 10) return true;
else return false;
}
这个方法是线程安全的吗?
我想会是这样,因为每个线程都有自己的局部变量堆栈,并且原语都存储在这个本地堆栈中。
唯一让我不确定的是long 将是两个单独的读取,因此通常不是线程安全的。
我的问题是:我可以确定方法的参数被原子复制了吗?因此,当使用原语作为参数时(甚至是float/long),我可以确定在将其复制到局部变量期间线程安全不会成为问题吗?
【问题讨论】:
-
缺少可变状态意味着该方法是线程安全的。
标签: java multithreading concurrency parameter-passing