mar*_*man 1 java multithreading
在Java中,哪些代码在多个线程之间共享,哪些代码被复制以用于一个特定的线程?
如果考虑下面的片段,那就太精确了
public void foo () {
int a = 0;
a++;
}
Run Code Online (Sandbox Code Playgroud)
由多个线程同时执行,每个线程是否拥有自己的变量副本,a还是在线程之间共享?
不,a是一个局部变量.这意味着每次调用foo都会获得自己独立的变量 - 无论是多线程还是在同一线程中递归.
请注意,这不是关于共享代码 - 而是关于共享数据.所有线程中都会运行相同的代码(很可能),但每次调用都将使用一组单独的局部变量.