ich folgende verstehen will, blockieren, nehme ich habe folgenden Codeblock:Aufruf für asynchrone Methode in try-catch-finally
try{
// do something
asynchronousMethodCallThatWritesFileOutputStreamToSocket(fileOutputStream);
}catch (SomeException e){
//handle exception
}finally{
closeFileOutputStream(fileOutputStream);
}
Meine Frage wird den schließlich schließt Strom vor asynchronem Verfahren beendet blockieren? Oder wird es irgendwie warten? Bitte, irgendwelche Zitate aus den Büchern, wenn Sie wissen. Vielen Dank.
N.B. Das ist Pseudo-Code, ich kenne Muster mit Versuchen mit Ressourcen.
Es wird zumindest versuchen, zu schließen. Der Punkt bei der Verwendung eines asynchronen Anrufs möchte nicht darauf warten, dass er beendet wird. Sie sollten also die Ressource entweder im asynchronen Aufruf oder in einem "Fertig" -Rückruf schließen. BTW: Du hättest das leicht herausfinden können ... – Fildor
genau. Ich habe gerade einen Block im Code gefunden, und ich versuche vorherzusagen, was passieren wird. –
Nun, ich würde erwarten, dass eine Exception entweder in den Schreib-Thread oder in den Thread geworfen wird, der versucht, die Datei zu schließen. Achten Sie auf Versuche/Fänge, die Ausnahmen stillschweigend verschlingen ... Aber die Vorhersage ist schwer, weil es immer noch möglich (wenn auch nicht wahrscheinlich) ist, dass der asynchrone Aufruf schnell genug ausgeführt wird, so dass der Abschluss ausgeführt wird, nachdem er abgeschlossen ist. – Fildor