java - 多线程间的共享数据和独有数据

标签 java multithreading

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

如果考虑以下片段,那就更精确了

public void foo () {

    int a = 0;

    a++;
}

被多个线程并发执行时,每个线程会持有自己的变量a副本还是在线程之间共享?

最佳答案

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

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

关于java - 多线程间的共享数据和独有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20776662/

相关文章:

multithreading - 在Linux内核中,以下方式创建实时kthread是否正确?

java - 因线程错误而停止 Spring Boot

java - 再次调用静态初始化器

java - 避免 Hibernate 中某些方法的持久化

java - 如何打印特定Hashmap键的所有值

java - RMI 环回 : Same thread?

java - 我们可以更改 java 使用的 unicode 版本吗?

java - 为什么 NetBeans 在这里显示有关空指针取消引用的警告?

multithreading - 游戏服务器如何使用 Boost :Asio work asynchronously?

c - 在 Linux 上处理多线程断管情况的服务器端套接字最佳实践是什么?