У меня есть три класса:выход Serialize в ArrayList
Chatroom_Server.java это главный класс, который будет excecutes в первую очередь.
public class Chatroom_Server {
public static ChatroomHandler chatroom_handler;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
try{
final int serverPort = 9000;
ServerSocket ser_sock = new ServerSocket(serverPort);
chatroom_handler = new ChatroomHandler();
chatroom_handler.fetchChatroomList();
for(int i=0;i<chatroom_handler.chatroomlist.size();i++){
Chatroom_base obj = (Chatroom_base)chatroom_handler.chatroomlist.get(i);
System.err.println(obj.chatroom_name);
}
}catch(Exception e){
System.out.println(e);
}
}
}
Второй класс ChatroomHandler.java
public class ChatroomHandler{
public static ArrayList<Chatroom_base> chatroomlist;
DbConnection dbcon;
ChatroomHandler(){
//load all chatrooms from the database and add those into arrayList
dbcon = new DbConnection();
chatroomlist = new ArrayList<Chatroom_base>();
}
public void fetchChatroomList(){
ArrayList<String> chtrmlist = dbcon.getChatroomList();
for(int i = 0;i<chtrmlist.size();i++){
System.out.println("Chatroom name123:"+chtrmlist.get(i));
Chatroom_base obj = new Chatroom_base();
synchronized(obj) {
obj.setChatroomname(chtrmlist.get(i));
chatroomlist.add(obj);
}
}
}
}
Третий класс Chatroom_base.java:
public class Chatroom_base{
public static ArrayList<Socket> chatSocketArray;
public static ArrayList<String> userInfo;
public static String chatroom_name;
private static final long serialVersionUID = 123456;
Chatroom_base(){
userInfo = new ArrayList<String>();
chatSocketArray = new ArrayList<Socket>();
}
public synchronized void setChatroomname(String tname){
System.out.println("Chatroom name:"+tname);
chatroom_name = tname;
}
}
Четвертый класс DbConnection.java, в котором я часть подключения к базе данных.
Я получаю вывод в приведенной ниже последовательности.
Chatroom name123:common
common3
common3
Chatroom name:common
common3
Chatroom name123:common2
Chatroom name:common2
Chatroom name123:common3
Chatroom name:common3
Я предполагаю, что это проблема сериализации. Процессы получают ресурс до времени. Я хочу получить выходные данные:
Chatroom name123:common
Chatroom name:common
Chatroom name123:common2
Chatroom name:common2
Chatroom name123:common3
Chatroom name:common3
common
common2
common3
У меня очень мало идей о java. Могу ли я получить какую-то идею или руководство для решения этой проблемы?