-1
votes

Le mot clé synchronisé et les conditions de course ont produit une erreur inattendue dans Java

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. XXX

J'ai simplement une forloop en bas pour exécuter ces threads 100 fois. Cependant, je reçois cette erreur dans la console: xxx

pourquoi est-ce?


2 commentaires

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.


3 Réponses :


2
votes

Le Démarrer () La méthode dans la classe La classe a les lignes suivantes: xxx

the threadstatus est utilisé pour signaler le statut du fil . Si c'est 0, cela signifie que le fil n'a pas encore été démarré. Le code ci-dessus signifie que, si vous essayez d'invoquer start () sur le thread qui est déjà en cours d'exécution - le illégalHreadStateException sera lancé.

L'erreur spécifique se produit car vous appelez start () Méthode plus d'une fois pour les threads donnés à la fois t1 et t2


1 commentaires

Vous voulez dire que je commence à partir de T1, T2 plus d'une fois?



1
votes

Vous ne pouvez pas démarrer le même fil plusieurs fois.
Exemple


0 commentaires

2
votes

Ce code: xxx

démarre t1 et t2 plus d'une fois. C'est interdit.


0 commentaires