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

avec Java Discussion :

Synchroniser une ressource avec un Timer


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 34
    Points
    34
    Par défaut Synchroniser une ressource avec un Timer
    bonjour,
    je viens a vous car j'ai un petit souci. voila, j'ai une application dont un script s'effectue périodiquement grace a un Timer. Ce script interroge un serveur et inscrit la reponse de ce dernier dans un fichier texte (tache A). l'action de ce script s'effectue toutes les 5 à 10 secondes ( je n'ai pas encore fixer la période).
    Mon souci est qu'a coté mon programme utilise ce fichier texte dans différents traitements(tache B,C,...). Ce que je voudrais c'est une methode pour éviter un interblocage entre A et les autres taches. Faire en sorte que ma tache A soit faite en tache de fond. J'ai regardé les Threads mais j'avoue que cette notion m'est encore floue .

    Si vous avez des idées, je suis preneur.

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Est-ce que les autres traitements(tache B,C,...) écrivent aussi dans le fichier ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    non seulement en lecture. Il n'y a que la tache A qui ecris dans ce fichier.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Dans ce cas cela ne devrait pas poser de problème pour les autres tâches d'accéder au fichier.

    Si tu utilises un Writer pour écrire dans le fichier,
    il faut faire un flush pour que les autres tâches "voient" les dernières modifications.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    je mets un out.flush lorsque je finis d'ecrire. mais ce que je crains c'est que lorsque j'effectue un traitement sur le texte, il y a ma tache A qui s'effectue en plein milieu de la lecture du fichier !!
    grosso modo. la tache B mets 6 seconde a lire,traiter, et fermer le texte et qu'au bout de la 3eme seconde, j'ai ma tache A qui s'invite et accede au texte. il y a risque de collision non? ou peut etre que je m'inquiete pour rien?

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    A mon avis, tout ce que tu risques c'est que la tâche B n'ai pas les toutes dernières informations.
    Mais ça ne devrait pas planter pas puisque B ne fait que de la lecture.

    Bon cela dit, je n'ai pas essayé sur tous les OS.
    Mon sentiment vient du fait que j'ouvre régulièrement
    des fichiers de logs avec notepad alors que l'application
    est en train de déverser allègrement dedans toutes ses informations.

    Si tu veux une sécurité absolue alors tu dois mettre les tâches dans
    des Threads et ne permettre l'accès au fichier qu'avec des méthodes "synchronised"
    c'est très efficace et du coup, les threads attendent chacun leur tour
    pour avoir accès à la ressource.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Ok merci. bon jvais faire comme ça au pire je passerai au thread !

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Dans le cas que tu évoques, je pense que ça va aller.

    Mais si tu veux programmer régulièrement en java
    il est vraiment rentable de maîtriser les Threads et les méthodes "synchronised".

    A la limite tu pourrais profiter de ce cas d'accès à un fichier pour te faire la main
    sur le sujet (tu en as pour deux ou trois heures avec un bon tutoriel)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

Discussions similaires

  1. java.net taper une ressource avec délai
    Par natoine dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 03/02/2011, 20h06
  2. Réponses: 0
    Dernier message: 08/06/2010, 22h04
  3. déclencher une action avec un timer
    Par leeloo95 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/11/2009, 15h30
  4. Synchroniser une application avec une base de données centrale
    Par Sayrus dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 25/08/2009, 20h22
  5. repeter une action avec un timer
    Par blondelle dans le forum C++Builder
    Réponses: 30
    Dernier message: 24/10/2008, 01h25

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