我想開始說如果你知道更好的方法來做到這一點,請告訴我。我寧願知道一個更好的做法,而不是做得不對。如何引用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