2010-09-07 4 views
0

Peut-on me dire combien de threads je peux utiliser dans une application. Je veux dire que l'utilisation de l'implémentation de threads est limitée à un nombre fixe?Utilisation des threads dans l'application

Puis-je utiliser le même fil pour plus d'une fois?

par exemple:

public Thread td; 
td = new Thread(this); 
td.start(); 

Puis-je utiliser le fil ci-dessus dans ma même application dans les différentes classes ou méthode?

Aidez-nous s'il vous plaît.

Répondre

0

Vous ne pouvez démarrer un thread qu'une seule fois. Pour créer un autre thread, vous devez créer une autre instance.

+1

À quoi servent les pools de threads? –

+1

@Peter: Les pools de threads démarrent leurs threads une seule fois. Ensuite, ils lui assignent un morceau de travail, et quand cela est fait, le garer dans la piscine à nouveau. – Thilo

+3

@Thilo, littéralement c'est correct. Cependant, la question initiale était «les fils peuvent-ils être réutilisés?», Ce qui est déroutant en tout cas. –

1

Vous pourriez avoir à lire en profondeur les concepts sur les threads. Ce n'est pas similaire aux morceaux réutilisables. Les threads ont beaucoup de problèmes à traiter comme les conditions de course. Vous devez vraiment savoir ce que vous faites avant de les utiliser.

0

JVM n'applique pas nombre maximum de fils, mais il pourrait y avoir d'autres facteurs soutien OS, ressources disponibles, etc. Vérifiez questions suivantes sur des lignes similaires pour fils max autorisés:

Java very limited on max number of threads?

Au sujet du vous utilisez le fil plusieurs fois, Vous devriez avoir regarder ThreadPoolExecutor qui fait un pool de threads.

+0

Si vous ne pouviez vraiment pas réutiliser les Threads, ThreadPoolExecutor (et thread pools en général) ne serait pas possible ... –

+0

Merci @ Péter Török supprimé déclaration confuse. – YoK

2

L'utilisation de l'implémentation de thread est-elle limitée à un nombre fixe?
Il n'y a pas de nombre fixe sur le nombre de threads, mais est limitée à la taille du tas alloué au programme.

Puis-je utiliser le même fil pour plus d'une fois?
Bien sûr, un même fil peut être utilisé un certain nombre de fois. Vérifiez le java.util.concurrent.Executor pour utiliser les pools de threads.

+0

la mémoire devrait être le facteur limitant, mais plutôt la zone où la pile des threads va que la mémoire tas. – Thilo

0

limites de la discussion dans le système d'exploitation et la mise en œuvre de threads de Java peuvent varier. Dans tous les cas, les threads consomment de la mémoire juste pour les maintenir même lorsqu'ils ne font rien puisque le système d'exploitation alloue une pile pour chaque instance. Dans une application Windows 32 bits, le nombre maximal de threads par processus est généralement 2048 car la taille de la pile par défaut est 1 Mo, donc 2 * 2048 = 2 Go. Cependant Java.exe sur Windows a une taille de pile de 256Kb donc peut-être qu'il peut aller plus haut.

Cependant, il n'est généralement pas nécessaire ou souhaitable de générer autant de threads. Quelque chose comme un serveur Web ou similaire utiliserait probablement un pool de threads et mettrait des limites sensibles sur le nombre maximum de threads qu'il permet à la fois. Seules les applications qui doivent traiter un grand nombre d'actions simultanées (par exemple un serveur IRC) doivent envisager de générer des milliers de threads, et même dans ce cas, je doute que ce soit une bonne idée. Avec l'équilibrage des charges, etc., la charge peut être répartie sur plusieurs PC, ce qui est une bonne chose du point de vue de la maintenance.

Questions connexes