gpt4 book ai didi

java - 线程是否创建静态变量的多个实例

转载 作者:行者123 更新时间:2023-12-03 23:02:12 24 4
gpt4 key购买 nike

我现在正在研究 TCP 套接字。我从 Thread 派生我的服务器类。

public class TCPServer extends Thread {

public static int SERVERPORT = 54321;
....
<code>
}

当我使用这个类时,它会打开几个线程。我的问题是,每个线程都有自己的静态变量 SERVERPORT 吗?因为好像我编辑了这个变量,它对其他人没有影响。

我对这个问题的解决方案是创建另一个类,比如说“GlobalVariables”,并让这个类访问它。

最佳答案

My question is, does each thread have its own static variable SERVERPORT?

不,它没有。该变量由进程中的所有线程共享。

I missed removing the final :D The variable I have is of type static boolean

即使变量是共享的,当您在一个线程中修改它时,更改也不一定对其他线程可见,直到稍后的某个未指定的时间。

您需要采取措施确保可见性。根据您的代码执行的操作,这可能包括:

  1. 显式同步;
  2. 使用 volatile boolean 值
  3. 使用 AtomicBoolean

关于java - 线程是否创建静态变量的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15408470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com