マルチスレッドの概念で Java ソケット プログラムを作成しようとしています。クライアントからサーバーへのすべての接続はスレッドです。すべてのクライアントは、自分の情報をサーバーに送信します。
スレッドからすべての値を収集し、それらをすべて文字列の配列に入れる方法を知りたいですか?
このすべてのスレッドを同期する必要がありますか?
Thread t = new Thread()
の代わりにonly を使用した場合の違いは何Thread[] t = new Thread(client)
ですか?
Thread[]
スレッドからすべてのアイテムを収集するために使用する最初のステップに適していますか?
スレッドを使用すると便利join()
ですか?
これはスレッドを作成する部分であり、
public void listenSocket(int client){
int i=0;
Thread[] t = new Thread[client];
while(i<client){
ClientWorker w;
try{
w = new ClientWorker(server.accept());
t[i] = new Thread(w);
t[i].start();
System.out.println(t[i].getName());
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);
}
i++;
}
}
これは、スレッドが行っていることの一部です
class ClientWorker implements Runnable{
Socket client;
String ip;
String load;
String data[]=new String[7];
ClientWorker(Socket client){
this.client = client;
}
public void setIP(String ip){
this.ip = ip;
}
public void setData(String load){
this.load = load;
}
public void getIP(){
System.out.println(ip);
}
public void getData(){
System.out.println(load);
}
public void run(){
BufferedReader in = null;
PrintWriter out = null;
XmlGenerator xml = new XmlGenerator();
try{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {
System.out.println("in or out failed");
}
while(true){
try{
String a = in.readLine();
setData(a);
String b = client.getRemoteSocketAddress().toString();
setIP(b);
out.println(a);
getData();
getIP();
}
catch (IOException e) {
System.out.println("Read failed");
}
}
}
}`
sync,callable thread に関するトピックを読みましたが、何も見つかりませんでした。再投稿すみません。