Jer*_*emy 1 java multithreading
可以说我在Java中有这样的类:
public class Function {
public static int foo(int n) {
return n+1;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从一个线程调用这样的foo方法会发生什么?
x = Function.foo(y);
Run Code Online (Sandbox Code Playgroud)
我可以用两个线程做到这一点,没有它们互相等待吗?假设foo需要一段时间,并且它被调用很多,因此每个线程可能会尝试同时使用foo.他们可以这样做,还是我必须在Function实例方法中创建所有方法并为每个线程提供它自己的Function对象?
Chi*_*hii 14
您调用的代码不存储任何状态,因此将确定性地返回是从一个线程还是多个线程调用 - 而不是像"代码行"那样需要保护(正如您似乎暗示您的问题),因为可以从多个线程运行"相同的代码行",前提是它们不共享数据(在这种情况下,不会).
如果您有类似代码,则会出现问题
public class Function {
private static int last = 0;
public static int foo(int n) {
last += n;
return last;
}
}
Run Code Online (Sandbox Code Playgroud)
这是当你开始需要担心破坏静态的不同线程时last.
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |