OVH Cloud OVH Cloud

thread réutilisable ?

4 réponses
Avatar
Gabriel
Bonjour :

soit un thread avec sa méthode run() :
public void run(){

while (isTermine == false){

try {
Thread.sleep(1000);
fenetre.decrementeSeconde();

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

A l'extérieur, j'appelle sa méthode finir qui fait isTermine=true => le
thread se termine. c'est ce que je veux.
Supposons mnt que je veuille le relancer alors qu'il a fini son
traitement: puis-je remettre sa propriété isTermine à false et hop, il
repart ? attention : ce n'est pas un Thread.suspend.

Ou alors, dois-je en réinstancier un nouveau ?
--
--
email : on se découvre pour m'écrire :)

4 réponses

Avatar
Vincent Lascaux
"Gabriel" a écrit dans le message de
news:cdp7e8$dqm$
Bonjour :

soit un thread avec sa méthode run() :
public void run(){

while (isTermine == false){

try {
Thread.sleep(1000);
fenetre.decrementeSeconde();

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

A l'extérieur, j'appelle sa méthode finir qui fait isTermine=true => le
thread se termine. c'est ce que je veux.
Supposons mnt que je veuille le relancer alors qu'il a fini son
traitement: puis-je remettre sa propriété isTermine à false et hop, il
repart ? attention : ce n'est pas un Thread.suspend.


Tu peux faire ca :

public synchronized void run() {
do {
while(isTermine == false) {
//...
}
try { wait(); } catch(InterruptedException e) { }
}while(true);
}

public synchronized void setIsTermine(boolean value) {
isTermine = value;
notifyAll();
}

Maintenant, le thread va tourner dans le boucle while(isTermine == false)
jusqu'à un appel à setIsTermine(false).
Une fois que c'est fait, il se bloque dans le wait, jusqu'à ce qu'un appel à
setIsTermine le débloque et lui permette de retourner dans la boucle

Avatar
jerome moliere
Bonjour,
tu peux utiliser des pools d'objets génériques permettant d'éviter le
gachis de CPU induit par la destruction/reallocation d'objets tels que
les threads...
cf code source des gros projets de serveurs TCP/IP (tomcat/jetty et les
autres)
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941
Avatar
Olivier Merigon
Plus simple que le code source de tomcat:
http://java.sun.com/developer/Books/javaprogramming/threads/chap13.pdf

Olivier



"jerome moliere" a écrit dans le message de
news:cdqdmb$21v3$
Bonjour,
tu peux utiliser des pools d'objets génériques permettant d'éviter le
gachis de CPU induit par la destruction/reallocation d'objets tels que
les threads...
cf code source des gros projets de serveurs TCP/IP (tomcat/jetty et les
autres)
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003

http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941


Avatar
Gabriel
Merci à tous pour vos réponses, j'ai plus qu'à lire :)

--
--
email : on se découvre pour m'écrire :)