私は単純なクライアント/サーバーアプリケーションを持っています。私はUIからarraylistにアクセスしようとしますが、代わりに空のarraylistを取得します。私はインターネット上のあらゆる可能な解決策を試しましたが、私の場合は何も働いていません。ArrayListは、読み込まれても別のスレッドからアクセスされると空です。
Server.java
import java.net.*;
import java.util.ArrayList;
import java.io.*;
public class Server {
public static ArrayList<MyThread> clients = new ArrayList<MyThread>();
public static void main(String args[]) throws IOException {
ServerSocket s = new ServerSocket(7777);
try {
while (true) {
Socket s1 = s.accept();
MyThread t = new MyThread(s1);
clients.add(t); // adds threads to an ArrayList
System.out.println(clients); // prints the ArrayList(It works and print all threads)
t.start(); //start the thread
}
} catch (SocketException e) {
System.out.println("Error: " + e);
}
}
}
これで私はあなただけの別のスレッドで作業していない
public void mouseClicked(MouseEvent arg0) {
try {
String s = textField.getText();
Client.ClientName = s; \\ gets the string entered and set it as Client Name
System.out.println(Server.clients); \\It's supposed to print Client ArrayList but instead it prints an empty List ([])
}
catch (NullPointerException e1) {
System.out.println("Error: " + e1);
}
}
});
あなたのクライアントはまだサーバーに接続していますか? – haifzhan
はい、既に接続され、リストに追加されています。それは確かだ。 –
コードを書式化してください。字下げされていないときは読みにくいです。 (これは実際のコードではありません。スラッシュが後方にあるので...) –