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 :

Questions sur BlockingQueue<T> (Modèle producteur / consommateur)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut Questions sur BlockingQueue<T> (Modèle producteur / consommateur)
    Bonsoir,

    Je viens récemment d'apprendre l'existence de l'interface BlockingQueue<T> qui permet de réaliser le modèle producteur / consommateur.
    Jusqu'à maintenant je ne connaissais que les méthodes wait() et notify() pour réaliser ce modèle.

    1. Quels sont les implémentations de BlockingQueue<T> que vous préférez ? ArrayBlockingQueue ? LinkedBlockingQueue ? ...

    2. Sachant qu'il est possible d'imposer une limite à la pile pour LinkedBlockingQueue, quelle différence y a-t-il avec l'implémentation ArrayBlockingQueue du coup ?
    Dans le constructeur de ArrayBlockingQueue, est-ce que réserver un tableau new T[nb_element] consomme tant de mémoire que cela ?

    3. Il existe plusieurs méthodes "producteur" : add(E e), put(E e), offer(E e), lesquels préférez-vous et pourquoi ?

    4. Existe-t-il des cas où l'interface TransferQueue<T> (apparu avec Java 7) est vraiment utile ? (exemple ?)


    PS: Ce sujet est la suite d'un autre sujet.

    Je vous remercie
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    1. Quels sont les implémentations de BlockingQueue<T> que vous préférez ? ArrayBlockingQueue ? LinkedBlockingQueue ? ...
    ArrayBlockingQueue si la queue doit avoir une taille fixe et réduite.
    Sinon LinkedBlockingQueue...

    Citation Envoyé par Gugelhupf Voir le message
    2. Sachant qu'il est possible d'imposer une limite à la pile pour LinkedBlockingQueue, quelle différence y a-t-il avec l'implémentation ArrayBlockingQueue du coup ?
    Dans le constructeur de ArrayBlockingQueue, est-ce que réserver un tableau new T[nb_element] consomme tant de mémoire que cela ?
    La différence vient de l'occupation mémoire... et ca dépend donc du "nb_element"...

    Citation Envoyé par Gugelhupf Voir le message
    3. Il existe plusieurs méthodes "producteur" : add(E e), put(E e), offer(E e), lesquels préférez-vous et pourquoi ?
    Chacune a un comportement différent. Donc ça dépend de tes besoins.
    Il n'y en a pas vraiment une meilleure que l'autre.
    • add() génèrera une exception si la queue est pleine.
    • put() bloquera jusqu'à que l'élément puisse être ajouté à la queue.
    • offer() retournera un booléen pour indiquer si l'ajout a été fait ou pas.

    Idem avec remove(), poll(), take() coté consommateur...

    Citation Envoyé par Gugelhupf Voir le message
    4. Existe-t-il des cas où l'interface TransferQueue<T> (apparu avec Java 7) est vraiment utile ? (exemple ?)
    La seule utilité, c'est que le transfer() t'assure que l'élément a été passé à un consommateur (avec les autres méthodes, tu sais seulement que l'élément est stocké dans la queue, mais rien ne garantie qu'il sera consommé).



    a++

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/01/2013, 10h40
  2. question sur le modèle MVC de JSF
    Par goute dans le forum JSF
    Réponses: 3
    Dernier message: 12/02/2009, 15h52
  3. Questions sur le modèle MVC
    Par dr23fr dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 05/12/2006, 19h46
  4. [ATL] Question sur le modèle de thread
    Par fredoun dans le forum MFC
    Réponses: 1
    Dernier message: 07/03/2006, 14h17
  5. Réponses: 24
    Dernier message: 29/08/2005, 13h33

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