IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

Thread infini sans sleep ?


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut Thread infini sans sleep ?
    Bonjour,

    je suis à la recherche de la meilleur méthode pour avoir un thread qui maintient mon application en vie sans avoir à utiliser Thread.sleep ?

    Voici ce que j'utilise, mais netbeans me préviens que c'est pas une très bonne idée d'utiliser Thread.sleep dans le while.

    Y-a-t-il une meilleur méthode ?

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public class CmdMain extends Thread
    {
    	private boolean exitRequested;
     
    	private CmdMain()
    	{
    		super("CmdCenter - Deamon thread");
    		setDaemon(false);
     
    		exitRequested = false;
    	}
     
    	@Override
    	public void run()
    	{
    		while(!exitRequested)
    		{
    			try
    			{
    				Thread.sleep(1000);
    			}
    			catch(InterruptedException e)
    			{
    			}
    		}
    	}
     
    	public static CmdMain getInstance()
    	{
    		return CmdMainHolder.INSTANCE;
    	}
     
    	private static class CmdMainHolder
    	{
    		private static final CmdMain INSTANCE = new CmdMain();
    	}
     
    	public static void main(String[] args)
    	{
    		CmdMain.getInstance().start();
    	}
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est quoi le but de l'opération??

    Parce que un thread qui ne fait rien, c'est pas parce que ton application reste pérsente qu'elle pourra continuer à faire quoi que ce soit d'autre

  3. #3
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    pour le moment c'est le tout début du codage de l'appli, ce thread, déjà est un thread démon, çà permet d'arriver au bout du main et de pas quitter l'appli tant qu'un thread démon tourne.

    Maintenant, je pense que dans le run, je lancerais le code métier de l'appli, mais après çà il servira qu'à attendre une demande de fin d'application.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est ta notion de 'attendre la fin de l'application' que je ne comprend pas.

    Ce thread n'a strictement aucun travail à faire, et en l'absence d'autres threads qui font du boulot ou attendent quelque chose de précis, l'application sera condamnée à ne rien faire, tel un zombie qui traine.

    Si votre application à autre chose à faire, c'est qu'un autre thread tourne et donc votre application ne terminera pas tant que cet autre thread tourne :/

  5. #5
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    C'est normal qu'il n'y ai rien d'autre à faire, c'est pas codé / mis dans mon exemple.

    Ma question était juste ciblé sur le fait que j'aimerais éviter le thread.sleep dans mon while ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben tu met le code que ton thread est censé faire dans ce cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AUDIO] Son infini sans coupure/blanc
    Par S(ô.Ô)B dans le forum Général Java
    Réponses: 1
    Dernier message: 03/01/2010, 18h25
  2. comment construire une boucle infinie sans bug
    Par stuffy dans le forum Général Python
    Réponses: 1
    Dernier message: 07/07/2008, 18h53
  3. Problème de thread: isAlive when sleeping ?
    Par minimarch76 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 01/04/2008, 22h46
  4. Faire attendre un temps sans Sleep()
    Par scarlaty dans le forum C++
    Réponses: 11
    Dernier message: 20/04/2007, 12h53
  5. [Thread]Boucle infinie sans 99% du proc
    Par dinver dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 18/12/2005, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo