Sie sind sich insofern ähnlich, als sie beide Thread#join()
y Future#get()
wird blockiert, bis der Thread/die Tabelle beendet ist. In der Thread#join()
Fall kehrt der Aufruf zurück, wenn der Thread stirbt. Es wird kein Ergebnis zurückgegeben. In der Future#get()
Fall kehrt er zurück, wenn der aufrufbare Thread mit der Ausführung seiner Aufgabe fertig ist, aber der ausführende Thread stirbt nicht (er ist normalerweise Teil eines Thread-Pools, so dass er sich dem Pool wieder zur Verfügung stellt).
Wenn diese Aufgaben, die Sie an den ExecuterService übergeben, unternehmenskritisch sind, empfiehlt es sich, einen Shutdown-Hook in Ihre Anwendung einzufügen, der Folgendes aufruft threadPool.shutdown()
um eine ordnungsgemäße Beendigung aller laufenden Threads zu ermöglichen, und wartet auf threadPool.isTerminated()
wahr werden, oder wartet auf threadPool.awaitTermination(max time before force shutdown)
um zurückzukehren.