Comment vérifiez-vous que le fil est en cours d'exécution de code en Java?
J'ai un multi-thread programme Java avec un tas de règles autour de la mise en place: Par exemple, le code dans Une classe ne doit être appelée à partir de la thread de l'INTERFACE utilisateur; 3 méthodes de la classe B doit être appelée uniquement à partir du réseau fil, etc.
Des suggestions sur la façon de faire des assertions ou autre code vérifie que ces règles sont-elles respectées? J'aimerais faire l'équivalent de test pour les "invariants" pour éviter les erreurs de codage sur l'utilisation du thread.
OriginalL'auteur Nils | 2011-01-13
Vous devez vous connecter pour publier un commentaire.
En plus de adamfisk est une excellente suggestion, il est aussi une méthode pratique pour tester si le thread en cours est l'EDT fil:
merci, je ne suis pas à l'aide de swing, mais je suppose que beaucoup de gens la lecture de ce sera.
OriginalL'auteur robert_x44
Fil.currentThread().getName()
OriginalL'auteur adamfisk
Vous pouvez essayer
Le problème de l'utilisation de ce nom est que n'importe quel nombre de threads peuvent utiliser ce nom par exemple, si vous êtes particulièrement paranoïaque, vous pourriez vous soucier de code comme celui-ci.
Pauvres thread normes de nommage et de copier-coller des erreurs. La plupart des programmes ne sont pas écrites pour assurer thread noms sont uniques et vous voyez des noms en double souvent.
OriginalL'auteur Peter Lawrey
Envisager l'inversion de la question. Tenir compte de la prévention au lieu de l'exécution.
Si la classe Mangalor ne peut être exécuté dans un thread d'INTERFACE utilisateur, de limiter la visibilité de la Mangalor de classe pour les classes de l'INTERFACE utilisateur.
Si les méthodes parler() et à écouter() de la classe CanOnString doit être exécuté uniquement dans le cadre d'un réseau de thread, de limiter la visibilité de ces méthodes à des classes que vous exécutez dans votre réseau fil.
OriginalL'auteur DwB
Je voudrais faire comme ceci dans mon code dans la classe A:
OriginalL'auteur Arthur Neves
Vous pouvez également vérifier le nom du thread utilisation de la journalisation par exemple, log4j ou logback, il suffit de définir un modèle, y compris les
%thread
comme ceci:OriginalL'auteur Israel Varea