我正在尝试创建一个具有多线程概念的 Java 套接字程序。从客户端到服务器的每个连接都是一个线程。每个客户端都将他们的信息发送到服务器。
我想问一下如何从线程中收集所有值并将它们全部放入一个字符串数组中?
需要同步所有这些线程吗?
如果只使用Thread t = new Thread()
而不是有什么不同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");
}
}
}
}`
我已经阅读了有关同步、可调用线程的主题,但我什么也没找到。抱歉重新发布。