Lak*_*age 1 java static multithreading static-methods race-condition
我有一个方法如下:
public static void method() {
int i = 0;
i = i + 1;
}
Run Code Online (Sandbox Code Playgroud)
我在静态方法中有一个int变量.并且该方法由几个线程访问.
我的问题是:
i变量是否符合竞争条件?如果变量是在方法中声明的,那么它将存在于为方法的单个调用提供的堆栈帧中.只能通过调用该方法的线程访问堆栈帧.在发布的示例中没有竞争条件,方法的每次调用都获得自己的变量副本.你需要共享状态才能有竞争条件.
这些堆栈帧是执行递归方法时堆积的东西,占用堆栈空间直到某个时刻发生堆栈溢出错误,因为递归导致越来越多的堆栈帧被分配,而没有一个方法调用有机会完成(这将释放他们的堆栈空间).
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |