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

Collection et Stream Java Discussion :

Définir une start date et end date pour ScheduledThreadPoolExecutor


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut Définir une start date et end date pour ScheduledThreadPoolExecutor
    Bonjour,

    J'utilise ScheduledThreadPoolExecutor pour gérer un certain nombre de thread simultanément.
    Je me demande si je peux définir une start date et end date pour commencer et finir la compilation ?

    Merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    La... compilation ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Je fait plusieurs threads en même temps, et pour chaque intervalle je refaite la même procédure, ScheduledThreadPoolExecutor gère tout ça .. mais quand commencer? quand finir?

    C'est clair?

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Palsajicoco Voir le message
    Je fait plusieurs threads en même temps, et pour chaque intervalle je refaite la même procédure, ScheduledThreadPoolExecutor gère tout ça .. mais quand commencer? quand finir?

    C'est clair?
    Quel rapport avec la compilation comme le disait thelvin ? Tu parles de la compilation de tes .java ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    La compilation exécute ScheduledThreadPoolExecutor .. et je devrai spécifier quand commencer et quand finir, genre un TimerTask, startData et endDate.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je comprends toujours pas ces histoires de compilation mais on va supposer que c'est sans importance.

    En fait, est-ce que ce serait pas plus simple de commencer... Dès que tu as quelque chose à faire, hop ! Tu l'envoies au ThreadPoolExecutor ?

    Pour finir, je dirais, quand tu arrêtes ton programmes, tu appelles le stop() du ThreadPoolExecutor, et tu laisses finir les tâches qu'il avait acceptées. Non ?

    'Fin bon, il est toujours possible de définir un Timer qui s'occupera à un moment de créer le ThreadPoolExecutor et d'y envoyer les tâches à faire, puis un autre Timer pour appeler stop() sur ce même ThreadPoolExecutor. Mais bon.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Voici mon code:

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    public class ProbeManager {
    	private final Log log = LogFactory.getLog(ProbeManager.class);
    	private final int poolSize;
    	private final int numNetElems;
    	public Date endDate;
    	public Date startDate;
     
    	public ProbeManager(int poolSize, int numNetElems) {
    		this.poolSize = poolSize;
    		this.numNetElems = numNetElems;
    		DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
     
    		try {
    			startDate = dateFormat.parse("06/26/2011 13:13:12");
    			endDate = dateFormat.parse("07/29/2011 12:55:12");
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public void processProbes(int loop) {
    		log.debug("Starting to process probes");
     
    		ScheduledThreadPoolExecutor threadPool = new ScheduledThreadPoolExecutor(
    				poolSize, Executors.defaultThreadFactory());
     
    		List<Probe> probes = new LinkedList<Probe>();
     
    		// 10 Probes
    		for (int i = 0; i < numNetElems; i++) {
    			Probe currentProbe = new Probe("probe-" + i);
    			probes.add(currentProbe);
     
    			threadPool.scheduleAtFixedRate(currentProbe, loop, loop,
    					TimeUnit.SECONDS);
    			threadPool.execute(currentProbe);
    		}
     
    		synchronized (this) {
    			try {
    				wait(60000);
    			} catch (InterruptedException e) {
    				log.error(e);
    			}
    		}
     
    		log.debug("Times Up!");
    		threadPool.shutdownNow();
     
    		log.debug("----------------");
     
    		for (Probe probe : probes) {
    			log.debug(probe + " executed " + probe.getCount() + " times");
    		}
    	}
    }
    On peut bien voir que il y a des variables start date et end date, j'aimerai bien definir la start date pour commencer le traitement de mes threads, et end date au lieu de wait();
    C'est comme pour le RemindTask, on définit la start date end date! mais la j'aimerai pas intégrer un autre outil pour plus de simplicité..

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu peux utiliser scheduleWithFixedDelay pour faire entrer un job démarrage et un job fin. Dans le job démarrage tu met tous tes Probe dans le scheduler, dans le job de fin tu fais le schutdown du scheduler.

    Mais vu ce que t'essaie de faire, je crois que l'api Quartz, qui est une api de gestion de jobs, est plus adaptée à tes besoins En plus, avec la persistence de son scheduler tu pourrais avoir ton application qui reprend là ou elle s'est arrêtée en cas d'interruption de service, ce qui est important si tu veux faire tourner des trucs sur un période de plusieurs semaines.

  9. #9
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Merci pour l'aide, Je pense pour garder les choses simple, j'opte pour scheduleWithFixedDelay si c'est vraiment ce don't j'en ai besoin, mais je comprend pas comment vous proposez de l’implémenter puisque je peux pas fixer une start date et end date ..

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Palsajicoco Voir le message
    je comprend pas comment vous proposez de l’implémenter puisque je peux pas fixer une start date et end date ..
    Faudrait savoir, dans votre message vous dite justement que vous avez un startDate et une endDate :/ Je vous suis plus là.

  11. #11
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Oui justrement, j'ai du mal répondu, j'ai effectivement un startDate et une endDate mais je sais pas comment les intégrer avec la méthode que vous proposez..

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long delay = endDate.getTime() - new Date().getTime();
    tout simplement

  13. #13
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Ca me retourne:

    Exception in thread "main" java.lang.NullPointerException
    at com.oghmasys.test.threadpool.ProbeManager.<init>(ProbeManager.java:33)
    at com.oghmasys.test.App.main(App.java:16)

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Une chose intéressante serait de lui passer des objets non-null, pour éviter une NullPointerException.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Bon, désolé encore c'etait juste un bloc try catch qu'il fallai ajouter ..
    Ca marche a priori pour la durée, mais pour startDate aucune idée comment l'integrer, puisque je veux commencer a une date donnée. Mais pour le moment mon programme tourne pour la durée souhaitée.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben pour la startDate, c'est exactement la meme chose que pour la endDate

  17. #17
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    Bon je vois vraiment pas comment, puisque pour le delay, j'ai besoin de startDate et endDate et intégrer ce long dans le wait, puisque c'est la logique du threadpool, mais la startDate, je sais pas comment je peux utiliser une durée pour commencer mon exécution a une date donnée.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    1) tu démarre (main) n'importe quand
    2) tu démarre le pool
    3) tu poste un job de démarrage avec un delay calculé pour qu'il colle à "startDate"
    4) tu poste un job de fin avec un delay calculé pour qu'il colle à "endDate"
    Fin du travail de ton main


    4) ton job de démarrage s'exécute, il poste tous les jobs à faire


    fin) ton job de fin s'exécute, il fait un schutdown du pool

  19. #19
    Membre régulier Avatar de Palsajicoco
    Étudiant
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 84
    Points
    84
    Par défaut
    J'ai résolu le problème simplement en ajoutant un schedule du timer qui a une startDate.

    Merci bien pour le support

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

Discussions similaires

  1. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  2. Définir une taille fixe pour une date
    Par Mystic eyes dans le forum SQL*Loader
    Réponses: 7
    Dernier message: 28/11/2008, 16h55
  3. [Dates] Calendrier ou autre pour la séléction d'une date
    Par RadicalBob dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2007, 17h36
  4. [MySQL] UNE date pour plusieurs dates et UN évènement pour plusieurs évènements...
    Par Aliosha dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/03/2007, 21h58
  5. [Dates] Besoin de conseil pour une date
    Par Dargos dans le forum Langage
    Réponses: 6
    Dernier message: 19/07/2006, 11h59

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