多个线程之间的共享数据和唯一数据

mar*_*man 1 java multithreading

在Java中,哪些代码在多个线程之间共享,哪些代码被复制以用于一个特定的线程?

如果考虑下面的片段,那就太精确了

public void foo () {

    int a = 0;

    a++;
}
Run Code Online (Sandbox Code Playgroud)

由多个线程同时执行,每个线程是否拥有自己的变量副本,a还是在线程之间共享?

Jon*_*eet 8

不,a是一个局部变量.这意味着每次调用foo都会获得自己独立的变量 - 无论是多线程还是在同一线程中递归.

请注意,这不是关于共享代码 - 而是关于共享数据.所有线程中都会运行相同的代码(很可能),但每次调用都将使用一组单独的局部变量.