2016-04-11 1 views
0

Je me demande si, une fois que le FutureTask a terminé son travail et que je peux obtenir le résultat avec succès, dois-je nettoyer la FutureTask pour libérer la ressource? Ou le FutureTask sera nettoyé automatiquement après un certain laps de temps après avoir terminé le travail?Nettoyage de FutureTask après l'utilisation de

Merci.

+1

Cela dépend probablement du résultat de la tâche. Si c'est un pojo, il vous suffit de laisser tomber toutes les références que vous tenez pour que gc fasse son travail comme vous le feriez avec d'autres pojos. Si le futur contient une référence à une ressource pouvant être fermée comme un flux, vous devrez peut-être la fermer - ou réfléchir à la raison pour laquelle le futur détient une telle ressource en premier lieu. – Thomas

Répondre

2


La FutureTask est un peu immuable. Une fois sa valeur et son état définis, ils ne peuvent plus être modifiés. En dehors de cela, la FutureTask est comme n'importe quel autre objet Java, vous n'avez donc rien à faire. Il est éligible pour GC dès qu'il n'y a plus de références à celui-ci. Cela signifie qu'il sera GCed une fois qu'il est hors de portée, ou si vous insistez, vous pouvez supprimer la référence en lui assignant null. Si vous avez bien écrit votre code, vous ne devez pas définir de référence nulle - chaque objet doit vivre dans la plus petite portée possible.