In meiner Anwendung (bei meiner Arbeit) pflegen wir einen Socket-Verbindungspool zur Kommunikationssteuerung. Es gibt eine große Anzahl von Threads, die eine aktive Verbindung aus dem Pool nehmen, sie verwenden und schließen. Aber der Haken ist, dass irgendwo dazwischen der Garbage Collector aufgerufen wird, um die nicht verwendeten Referenzen zu sammeln.
Jetzt, nachdem der Garbage Collector aufgerufen wurde, möchte ich:
- alle Threads anhalten, die an der Kommunikation teilnehmen (bitte beachten Sie, dass meine Threads zusammen mit dem GC laufen -> ich meine, die Planung macht es möglich)
- die Socket-Verbindungen vom Thread freigeben (d.h. Referenzen zur Socket-Verbindung), deren Status irgendwo dazwischen liegen könnte oder falls das praktisch nicht möglich ist, dann:
- Wie kann man die Aufruf des GC verzögern, nachdem alle Threads, die die Ressourcen nutzen, fertig sind. In diesem Fall könnte es erforderlich sein festzustellen, ob die relevanten Threads ihre Aufgabe beendet haben.