Je viens de commencer les bases de la filetage en Java.Le mot-clé synchronisé indique au planificateur de ne pas passer de contextuellement au milieu d'une exécution du fil. En outre, la condition de course se produit lorsque davantage d'un fil tente d'accéder à la même ressource. Avec cela à l'esprit, j'ai créé une classe simple pour démontrer le concept à moi-même. J'ai simplement une forloop en bas pour exécuter ces threads 100 fois. Cependant, je reçois cette erreur dans la console: p> pourquoi est-ce? P> p>
3 Réponses :
Le the L'erreur spécifique se produit car vous appelez Démarrer () CODE> La méthode dans la classe code> La classe a les lignes suivantes:
threadstatus code > est utilisé pour signaler le statut du fil code> code>. Si c'est 0, cela signifie que le fil
code> n'a pas encore été démarré. Le code ci-dessus signifie que, si vous essayez d'invoquer
start () code> sur le thread code> qui est déjà en cours d'exécution - le
illégalHreadStateException code> sera lancé. P>
start () code> Méthode plus d'une fois pour les threads donnés à la fois
t1 code> et
t2 code > p> p>
Vous voulez dire que je commence à partir de T1, T2 plus d'une fois?
Ce code: démarre t1 code> et
t2 code> plus d'une fois. C'est interdit. p> p>
Ce problème n'a rien à voir avec le mot clé synchronisé. Vous devriez envisager de le supprimer du titre.
"Pour exécuter ces threads 100 fois" Si ce code a fonctionné, il les exécuterait 101 fois.