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

Java Discussion :

File Bloquante Bornée


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut File Bloquante Bornée
    Bonjour à tous,
    Dans le cadre d'un TP de programmation java multithread, je doit implémenter une file bloquante bornée.
    Seulement je n'ai aucune idée, je ne vous demande pas de faire tout le code, juste de m'expliquer comment faire si possible.
    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
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
     
    package prog2.concur.exercice2;
     
    import java.lang.reflect.Array;
    import java.util.ArrayList;
     
    /**
     * Une file de communication bornee bloquante.
     *
     * Les threads peuvent déposer (resp. prendre) des objets dans une telle file.
     * Cette opérations peut être bloquante si la file est pleine (resp. vide).
     */
    public abstract class AbstractFileBloquanteBornee<E>
    {
     
        protected E[] tableau;
        protected int tete;
        protected int queue;
        protected boolean estVide;
        protected boolean estPleine;
     
        /**
         * Créer une file de capacité maximale n.
         *
         * param n - la capacité maximale de la file.
         * n devrait être supérieur ou égal à 1.
         */
        @SuppressWarnings({"unchecked"})
        public AbstractFileBloquanteBornee (int n) throws IllegalArgumentException 
        {
            if(n<1) 
                throw new 
                    IllegalArgumentException(
                            "AbstractFileBloquanteBornee : la capacité de la file doit être > 0");
            else {
                /* Création d'un tableau pseudo-générique.
                 * Fonctionne tant que le tableau reste "interne" à la classe.
                 * Cf. http://stackoverflow.com/questions/529085/how-to-generic-array-creation
                 */
                tableau = (E[]) new Object[n];
                tete = queue = 0;
                estVide = true;
                estPleine = false;
            }
        }
     
        /**
         * Déposer une référence dans la file.
         *
         * Le dépôt est fait en fin de file.
         * L'objet référencé n'est pas copié au moment du dépôt.
         * Le dépôt est bloquant lorsque la file est pleine
         *
         * param e - l'élément à ajouter à la file
         */
         abstract public void deposer (E e) throws InterruptedException;
         {
     
         }
     
        /**
         * Prendre une référence dans la file.
         *
         * La prise est faite en tête de file.
         * L'objet référencé n'est pas copié au moment du dépôt.
         * La prise est bloquante lorsque la file est vide.
         *
         * returns la référence de tête de la file
         */
        abstract public E prendre () throws InterruptedException;
        {
     
        }
        public static void main(String[] args) 
        {
     
     
    	}
    }

  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
    Qu'est-ce qui te bloque dans l'histoire?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Par défaut
    Hello kev85270,

    Je pense que ton TP consiste à concevoir une queue bloquante comme celle du JDK.
    Si tu ne sais pas par ou commencer, essaye de te documenter du côté de BlockingQueue et inspire toi de la classe ArrayBlockingQueue<E> du JDK.

    Voici quelques liens utiles :
    http://tutorials.jenkov.com/java-uti...kingqueue.html

    http://www.javamex.com/tutorials/blo..._example.shtml

    Bon courage.
    Awane

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par awane Voir le message
    Je pense que ton TP consiste à concevoir une queue bloquante comme celle du JDK.
    Si tu ne sais pas par ou commencer, essaye de te documenter du côté de BlockingQueue et inspire toi de la classe ArrayBlockingQueue<E> du JDK.
    Pour un exercice c'est peut-être un peu compliqué quand même. Les implémentations du JDK évitent les synchronisations autant que possible pour optimiser les performances multithreadées, mais au prix d'une architecture nettement plus compliquée.

    Il est probable que l'exercice ne consiste qu'à déclarer les méthodes synchronized, et utiliser wait() et notifyAll().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. SendMessage bloquant l'exécution du programme
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2003, 19h26
  2. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    Réponses: 9
    Dernier message: 10/04/2003, 17h56
  3. [File et Directory ListBox] Soucis de filtre
    Par Mercilius dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/04/2003, 16h17
  4. A propos des 'File management Functions' de Windows
    Par znaidi dans le forum Windows
    Réponses: 3
    Dernier message: 01/04/2003, 16h01
  5. recupèrer file d'attente d'impression
    Par magic corp. dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2002, 14h12

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