java - 从子线程访问父实例

标签 java multithreading sockets static parent

我正在编写将在 Java 中模拟 Kerberos 协议(protocol)的代码。我有一个服务器类和一个客户端类。但是有些内容是静态的,而另一些则不是,再加上套接字,至少可以说我很困惑。我认为在这个问题中协议(protocol)的细节是任意的。

我有一个服务器类,它调用一个 ServerThread 类:

public class Server{

    public void someMethod(){ /* some code */ }

    public static void main(String args[]){ 
        ServerSocket serverSocket = new ServerSocket(port);
        new ServerThread(serverSocket.accept()).start();
    }
}

public class ServerThread extends Thread{
    /* constructor (takes serverSocket from Server) */

    this.parent.someMethod();
    /* That would call someMethod() from the parent class Server instance
     * that instantiated this.
     */
    }

Server 类中实例化 ServerThread 的部分已经交给我了,我必须按原样使用它。我自己编写的 someMethod() 方法,这是我想从 ServerThread 使用的方法。有没有一种方法可以调用 this.parent.someMethod(); 的代码行?如果可以的话,有没有一种方法可以从一个 Controller 类访问这两个类,或者静态内容与非静态内容是否会破坏这个想法?

最佳答案

您能否将对 Server 实例的引用传递给 ServerThread(通过 getter/setter 或修改构造函数)?如果是这样,传递引用,然后您可以调用 server.someMethod(),假设 server 是变量名。

如果不是,您的 someMethod() 作为静态方法是否有意义?如果将其设为静态方法是安全的,您可以执行 Server.someMethod()。

关于java - 从子线程访问父实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249138/

相关文章:

java - hamcrest TypeSafeMatcher 无法匹配双数组

java - Android 应用程序抛出 Guice 异常

java - 不使用eclipse执行java/maven项目

Java 简单并发服务器

sockets - Azure Web App 套接字数量有什么限制?

java - 检索图像 byte[] 并保存到 MySql

java.lang.IllegalStateException : Not on FX application thread; currentThread = Thread-4

C++ 服务器收到太多请求,我想一次接受一些请求

java - 当我同时将多个客户端连接到java服务器时,套接字写入错误

apache - "OSError: [Errno 88] Socket operation on non-socket"by 触发器