Pourquoi voulez-vous faire cela en utilisant plusieurs threads? Peut-être que votre exemple a été simplifié à l'extrême, mais si vous pouvez éviter le threading, alors faites-le - et il semblerait que ce problème n'en a pas besoin.
Avez-vous beaucoup de fichiers, ou un très gros fichier, ou autre chose? Pourquoi ne pouvez-vous pas simplement exécuter les trois actions les unes après les autres?
MISE À JOUR
Je sentais que je devrais au moins essayer de vous aider à résoudre le problème sous-jacent, vous êtes confronté. Je pense que vous devez considérer la tâche que vous envisagez comme un pipeline. Vous commencez avec des chaînes, vous supprimez des caractères spéciaux (nettoyage), vous les écrivez dans un fichier. Quand vous avez finalement écrit toutes les chaînes dont vous avez besoin pour les trier.
Tout jusqu'à l'étape de tri peut, et devrait, être fait par un seul fil. Lire la chaîne, la nettoyer, l'écrire dans un fichier, passer à la chaîne suivante. La dernière tâche de tri ne peut pas se produire facilement tant que toutes les chaînes n'ont pas été écrites correctement dans le fichier.
Si vous avez beaucoup de fichiers à écrire et à trier, chacun d'eux peut être traité par un thread séparé, mais j'éviterais d'impliquer plusieurs threads dans le traitement d'un fichier donné.
Pourquoi voulez-vous des discussions? Cela ressemble à un thread pourrait prendre soin de tout ... Si vous avez 3 threads, ils doivent tous attendre les uns les autres ... – Zenuka
Mec, c'est un mauvais exemple pour commencer à enfiler. Chaque thread va être verrouillé pendant que les autres travaillent avec le fichier. –