11
votes

Pourquoi il y a deux méthodes d'utilisation du fil en Java?

Je sais qu'il y a deux façons d'utiliser un fil en Java:

  1. Mettre en œuvre Runbleable
  2. étendre le fil

    Je sais aussi que la mise en œuvre exécutable est meilleure que l'extension thread .

    Mais pourquoi il y a deux façons - pourquoi pas seulement un?

    Si la mise en œuvre Runnable est une meilleure approche, pourquoi existe-t-il une autre option?

    Qu'est-ce qui ne va pas avec une seule option?


10 Réponses :


7
votes

Techniquement, il n'y a qu'une seule façon: mettre en œuvre Runnable . Discussion , soit dit en passant, ne vient que, si son extension vous remplissiez trivialement l'exigence d'interface.


0 commentaires

2
votes

Sous-classement Le thread La classe vous permet de modifier d'autres fonctions ultérieures de la classe WHLD , si vous souhaitez le faire. Vous ne devriez probablement pas.

En outre, la classe de thread de sous-classement peut entraîner un code plus lisible, parfois dans votre sous-classe, vous pouvez avoir votre propre API personnalisée. On peut imaginer des cours telles que la téléchargement, le rendu, etc. Extende thread.


0 commentaires

17
votes
  • étend le thread :

    Votre thread crée un objet unique et associez-le à celui-ci

  • implémente exécutable :

    Il partage l'objet même à plusieurs threads

    Une autre chose à noter, car vous pouvez étendre une seule classe en Java, si vous étend le thread , vous ne pouvez pas étendre une autre classe. Si vous choisissez de Mettre en œuvre Runnable , vous pouvez étendre la classe alors.


0 commentaires

3
votes

Une autre raison pour laquelle nous utilisons chaque type de filetage.

Extension de la classe ne vous donnera pas une option pour étendre une autre classe. Mais si vous implémentez une interface Runnable , vous pouvez étendre d'autres classes dans votre classe.

Donc, en fonction de votre condition de conception, vous pouvez utiliser l'une des menthodes.


0 commentaires

1
votes

la plupart du temps, nous utilisons une interface runnable. Parce que cela nous permet plus de flexible sur la structure et la fonctionnalité. Java permet un héritage multiple pour l'interface. Ce concept est utilisé beaucoup de choses dans la conception de logiciels.

Au fait, il y a une autre interface appelée appelable. Une classe appelable peut renvoyer la valeur dans TYPE V et peut également lancer des exceptions vérifiées.


0 commentaires

2
votes

Utilisation du thread en tant que tâche fournit un moyen compact pour créer et exécuter un fil parallèle xxx


0 commentaires

2
votes

Les deux méthodes ont des approches différentes. La mise en œuvre d'une interface annulable ne donne aucun contrôle sur le fil lui-même. Et si nous étendons la classe de thread, la classe dérivée ne peut pas prolonger aucune autre classe de base.

Donc, si l'utilisateur veut un contrôle totalement de contrôle sur le programme, l'extension de la classe de thread est une meilleure option et si l'utilisateur souhaite une flexibilité de l'extension d'autres classes de base, la mise en œuvre d'une interface exécutable est bonne option.


0 commentaires

2
votes

Même si vous implémentez une interface exécutable, vous devrez créer un thread pour laisser votre tâche fonctionner comme un fil. Avantages évidents que vous sortez de la mise en œuvre en cours d'exécution sont

  1. Vous avez la liberté d'étendre toute autre classe
  2. Vous pouvez mettre en œuvre plus d'interfaces
  3. Vous pouvez utiliser votre implémentation annoncable dans les piscines de fil

    L'extension de la classe de thread n'est qu'une option car elle implémente en interne en interne afin de mettre en œuvre indirectement une interface exécutable indirectement. C'est juste que cette classe n'a pas été rendue finale pour empêcher les développeurs de l'étendre. Comme Joshua Bloch mentionne dans la «Java efficace» qu'il ne devrait y avoir aucune raison d'étendre le fil habituellement


0 commentaires

2
votes

en extension du thread, chacun de vos threads a un objet unique qui lui est associé, alors que la mise en œuvre de la mise en œuvre de plusieurs threads peut partager la même instance runnable.


0 commentaires

1
votes

Lorsque nous créons du thread par des instruments exécubles, nous n'initialisons aucune valeur lors de la création de thread. Mais lorsque nous étendons la classe de thread pour créer du fil, nous pouvons initialiser une certaine valeur si nécessaire à l'aide de l'avantage du constructeur comme FOLLW

MyThread t = new MyThread(7);
t.start();


2 commentaires

Merci .. Pour les commentaires. C'est aussi l'important terme de la question.


-1 Vous pouvez définitivement initialiser des variables dans des classes qui implémentent exécutables. Voici un article < / a> avec un exemple. Il vaut également la peine de lire pour son explication des avantages et des différences entre " Mise en œuvre de la mise en œuvre de " vs " Extension du thread ".