Java 如何使用对象';调用它的线程实例的方法?
我目前正在为多人游戏编写服务器。服务器的主要类如下所示:Java 如何使用对象';调用它的线程实例的方法?,java,multithreading,Java,Multithreading,我目前正在为多人游戏编写服务器。服务器的主要类如下所示: public final Logger logger = LogManager.getLogger(Turtle.class.getName()); public boolean isStopped = true; public static Turtle serverInstance; public NetworkHandler networkHandler; protected InetAddress ip; protected i
public final Logger logger = LogManager.getLogger(Turtle.class.getName());
public boolean isStopped = true;
public static Turtle serverInstance;
public NetworkHandler networkHandler;
protected InetAddress ip;
protected int port;
public Turtle(InetAddress ip, int port){
this.ip = ip;
this.port = port;
}
public static void main(String[] args){
serverInstance = new Thread(new Turtle(NetworkHandler.getipByName("0.0.0.0"), 19132));
serverInstance.start();
}
public void run() {
logger.info("Starting Turtle...");
isStopped = false;
logger.info("Initializing Networking.");
networkHandler = new NetworkHandler(ip, port);
networkHandler.start();
logger.info("Done!");
}
public NetworkHandler getNetworkHandler(){
return networkHandler;
}
public static Thread getServer(){
return serverInstance;
}
public static String getMOTD(){
return "MCCPP;MINECON;[0/20] Turtle Test Server";
}
public Logger getLogger(){
return logger;
}
public void stop(){
logger.info("Turtle is stopping.");
networkHandler.stahp();
System.exit(0);
}
这个类本身就是一个可运行的类。如您所见,我试图通过将静态serverInstance设置为线程中的服务器实例,然后调用start方法来启动服务器。但是,这不起作用,因为serverInstance需要Turtle对象(该类的名称)。我无法将其更改为线程,因为程序的其他部分需要通过该实例使用从Turtle到Thread的方法,而将serverInstance更改为Thread将不允许我访问该类的任何方法
所以,问题是,如何将serverInstance设置为该线程,并保留从serverInstance访问所有Turtle方法的权限
抱歉,这有点让人困惑。我的脑子里也有点乱七八糟,我可能很难把它说出来。这个有用吗
public static Turtle globalTurtle;
public static Thread serverInstance;
public static void main(String[] args){
globalTurtle = new Turtle(NetworkHandler.getipByName("0.0.0.0"), 19132);
serverInstance = new Thread(globalTurtle);
serverInstance.start();
}
(还有所有其他行…是的,谢谢!)我在想,使用raw类可能不会产生与线程相同的结果……显然我错了。再次感谢!