我想开始说如果你知道更好的方法来做到这一点,请告诉我。我宁愿知道一个更好的做法,而不是做得不对。如何引用Thread类的新实例?
我在写一个服务器程序,它必须与多个客户端交互。我正在使用这个答案提出的方法。 (socket programming multiple client to one server)。我正在创建'EchoThread'的新实例。
我也有另一个类,有一些变量,需要能够被我的服务器中的所有类/操作访问和更改。我想知道如何从创建新的'EchoThread'对象和'EchoThread'类的类中注入(我认为就是它所称的)实例。从上面的链接的答案
部分:
while (true) {
try {
socket = serverSocket.accept();
} catch (IOException e) {
System.out.println("I/O error: " + e);
}
// new threa for a client
new EchoThread(socket).start();
}
我有类的实例我要注入:
VarsClass vars = new VarsClass();
我通常“链接”,这些做的事:
VarsClass vars = new VarsClass();
ExampleClass example = new ExampleClass();
example.link(vars);
这是'ExampleClass'中的'link'方法
public void setGlobalVariables(GlobalVariables global) {
this.globalVariables = global;
}
我如何在'ExmapleClass'和'VarsClass'中引用'EchoThread'?我正在这样做,所以每个类都不创建VarsClass的新实例。 (避免我在这里的问题:Using the same variables in two threads, but I don't know why they won't update in Java)
非常感谢您提前给予每一位的耐心和帮助。 〜Rane
你可以在这里注入:'new EchoThread(socket).start();'。给EchoThread的构造函数另一个参数或更多。 – 2014-10-04 00:51:38
不要这样写代码。启动线程的行应该在try块内:否则,如果有异常,您将使用上次接受的套接字启动另一个线程。取决于try块中代码成功的代码也应该放在try块中。 – EJP 2014-10-04 02:17:03