Приветствие,
Я работаю над программой, которая зависит от локальной сети p2p, я создаю новые одноранговые узлы, нажимая кнопку run в IDE, я хочу, чтобы список массивов был разделен между всеми потоками, чтобы я мог изменить его.
проблема, с которой я столкнулся: если первый поток записывает в файл сериализации, вновь созданные потоки могут читать эту модификацию в списке, но если последний поток изменяет список, первые потоки не могут видеть эту модификацию, поскольку они десериализуются файл один раз нажмите на кнопку запуска.
есть ли решение для этого? (Java)
Код:
Peer peer = Peer.getInstance(portName, portNumber, "localhost", peers);
new Thread(peer::startHost).start();
peers.put(peer.getPort(), peer);
waitASecond();
serializePeers();
return peer;
Сериализация:
private static void serializePeers() {
try {
FileOutputStream fos = new
FileOutputStream("peersList.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(peers);
oos.close();
fos.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
Desirialize:
private static void deserializePeers() {
try {
FileInputStream fis = new FileInputStream("peersList.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
peers = (LinkedHashMap<Integer, Peer>) ois.readObject();
ois.close();
fis.close();
} catch (Exception e) {
System.out.println("This is the first peer connected to the network"); }
}