Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

thread en attente d'un sleep

8 réponses
Avatar
pcouas
Bonjour

J'ai un thread qui fait un "sleep(x)" ce qui est normal dans le
traitement de fond
Mais j'ai un cas precis ou je souhaiterais qu'il redemarre de suite,
es'ce un sleep(0) ?

Cordialement
Philippe

8 réponses

Avatar
Bruno CAUSSE
dans l'article , pcouas
à a écrit le 20/10/06 12:01 :

Bonjour

J'ai un thread qui fait un "sleep(x)" ce qui est normal dans le
traitement de fond
Mais j'ai un cas precis ou je souhaiterais qu'il redemarre de suite,
es'ce un sleep(0) ?

Cordialement
Philippe



pourquoi mettre un sleep ? Un wait non?

Avatar
pcouas
de mémoire le wait nécessite obligatoirement un notify externe pour
redemarrer ?
je me demande si un notify fonctionnairs pour mon cas spécifique avec
le sleep(x)

Philippe
Avatar
Bruno CAUSSE
dans l'article , pcouas
à a écrit le 20/10/06 14:34 :

de mémoire le wait nécessite obligatoirement un notify externe pour
redemarrer ?


Non , de memoire il existe un wait(x)

je me demande si un notify fonctionnairs pour mon cas spécifique avec
le sleep(x)


Oui, notify() est la bonne methode pour relancer le thread sans attendre la
fin du wait(x).

Avatar
François-Xavier GENDRIN
Bonjour

J'ai un thread qui fait un "sleep(x)" ce qui est normal dans le
traitement de fond
Mais j'ai un cas precis ou je souhaiterais qu'il redemarre de suite,
es'ce un sleep(0) ?


/**
* Causes the currently executing thread object to temporarily pause
* and allow other threads to execute.
*/
Thread.yield()

Avatar
Bruno CAUSSE
dans l'article ehil34$k49$,
François-Xavier GENDRIN à a écrit le
23/10/06 16:54 :

/**
* Causes the currently executing thread object to temporarily pause
* and allow other threads to execute.
*/
Thread.yield()


Non, yield() ne sert a rien dans ce cas la le bon couple est wait(x),
notify()

Avatar
Xavier Tarrago
Pourquoi pas Thread.sleep(0); ? Ca devrait le faire. Avec une exception
InterruptedException levée si le thread a été interrompu.
Je n'ai pas essayé, mais je ne vois rien dans la doc qui l'interdise...

wait ne marche pas car il faut qu'un autre thread appelle notify().

"François-Xavier GENDRIN" a écrit
dans le message de news:
ehil34$k49$
Bonjour

J'ai un thread qui fait un "sleep(x)" ce qui est normal dans le
traitement de fond
Mais j'ai un cas precis ou je souhaiterais qu'il redemarre de suite,
es'ce un sleep(0) ?


/**
* Causes the currently executing thread object to temporarily pause
* and allow other threads to execute.
*/
Thread.yield()



Avatar
Bruno CAUSSE
dans l'article ehkojn$rmu$, Xavier Tarrago à
a écrit le 24/10/06 11:58 :

Pourquoi pas Thread.sleep(0); ? Ca devrait le faire. Avec une exception
InterruptedException levée si le thread a été interrompu.
Je n'ai pas essayé, mais je ne vois rien dans la doc qui l'interdise...

wait ne marche pas car il faut qu'un autre thread appelle notify().

"François-Xavier GENDRIN" a écrit
dans le message de news:
ehil34$k49$
Bonjour

J'ai un thread qui fait un "sleep(x)" ce qui est normal dans le
traitement de fond
Mais j'ai un cas precis ou je souhaiterais qu'il redemarre de suite,
es'ce un sleep(0) ?


/**
* Causes the currently executing thread object to temporarily pause
* and allow other threads to execute.
*/
Thread.yield()





Le problème d'origine :

Faire attendre un thread (avec une attente MAXIMUN de x) mais si un
événement (attendu) se produit pendant l'attente on redémarre immédiatement
le thread.

En quoi sleep(0) repond au probleme

void wait(long timeout)
          Causes current thread to wait until either another thread invokes
the notify() method or the notifyAll() method for this object, or a
specified amount of time has elapsed.



Avatar
Xavier Tarrago
Désolé, j'avais pris le train en marche ).

Dans ce cas, le bon outil est effectivement wait(long timeout)

L'évènement attendu est le fait qu'un autre thread exécute notify().

"Bruno CAUSSE" a écrit dans le message de news:
C163BF41.230F7%

Le problème d'origine :

Faire attendre un thread (avec une attente MAXIMUN de x) mais si un
événement (attendu) se produit pendant l'attente on redémarre
immédiatement
le thread.

En quoi sleep(0) repond au probleme

void wait(long timeout)
Causes current thread to wait until either another thread invokes
the notify() method or the notifyAll() method for this object, or a
specified amount of time has elapsed.