Thread是否创建了多个静态变量实例

Gun*_*ram 2 java static multithreading

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

public class TCPServer extends Thread {

  public static int SERVERPORT = 54321;
....
<code>
}
Run Code Online (Sandbox Code Playgroud)

当我使用这个类时,它会打开几个线程.我的问题是,每个线程都有自己的静态变量SERVERPORT吗?因为看起来我编辑这个变量,它在其他变量中没有效果.

我对这个问题的解决方案是创建另一个类,比如说"GlobalVariables"并给它这个类访问它.

NPE*_*NPE 6

我的问题是,每个线程都有自己的静态变量SERVERPORT吗?

不,不是的.该变量由进程中的所有线程共享.

我错过了删除final:D我拥有的变量是类型static boolean

即使变量是共享的,当您在一个线程中修改它时,更改也不一定会被其他线程看到,直到稍后的未指定时间.

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

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