Ich habe eine Klasse, die eine Verbindung zu einem Server wie folgt herstellt.Setzen von "Flags" zwischen Threads in Java
Der Consumer, der der msgHandler ist, fragt häufig den Socket ab, wenn eine Verbindung jemals wie folgt untergeht.
@Override
public void connectionInit(Socket s) throws IOException {
logger.info("Connected to AWW Service on " + configuration.getAwwHost() + ":" + configuration.getAwwPort());
output = new BufferedOutputStream(s.getOutputStream());
connector.componentReady();
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
try {
pollServer();
} catch (IOException e) {
// SOCKET GETS BROKEN HERE
}
}
}, 0, 25000);
}
Frage ist, wie kann ich von der Ausnahme kommunizieren i erhalten, wenn die Socket-Verbindung wird auf die run() Faden gebrochen zurück, so kann er versuchen, den Sockel und den Eingangsstrom neu zu initialisieren?
Ich glaube nicht, dass ein notify() oder wait() Mechanismus hier angebracht ist, da wait() den run() Thread einfach in den Ruhezustand versetzt. Ich dachte, was ist das Äquivalent zum Setzen eines Flags, wenn die Verbindung unterbrochen wird, und der run() - Thread überprüft ständig das Flag, und wenn es auf True festgelegt ist, initialisiert es den Socket neu. Aber ich bin mir sicher, dass es einen effizienteren Multi-Threading-Ansatz geben würde, der nativ zu Java ist, um dies zu erreichen.