Τρόπος εφαρμογής της διασύνδεσης BlockingQueue σε Java

Αυτό το άρθρο θα σας παράσχει μια λεπτομερή και περιεκτική γνώση του πώς να εφαρμόσετε ένα BlockingQueue Interface στην Java.

Η ουρά είναι μια σημαντική πτυχή οποιασδήποτε γλώσσας προγραμματισμού. Ειδικά αν μιλάμε . Σε αυτό το άρθρο, θα συζητήσουμε το BlockingQueue Interface στην Java με την ακόλουθη σειρά:



Τι είναι η διασύνδεση BlockingQueue στην Java;

Μια διασύνδεση BlockingQueue στη Java είναι μια ουρά που αποκλείεται όταν προσπαθείτε να κάνετε dequeue από αυτήν και η ουρά είναι κενή ή εάν προσπαθείτε να τοποθετήσετε αντικείμενα σε αυτήν και η ουρά είναι ήδη γεμάτη. Ένα νήμα που προσπαθεί να αποσυμπιέσει από μια κενή ουρά αποκλείεται έως ότου κάποιο άλλο νήμα εισάγει ένα στοιχείο στην ουρά. Ένα νήμα που προσπαθεί να γεμίσει ένα στοιχείο σε μια πλήρη ουρά αποκλείεται έως ότου κάποιο άλλο νήμα κάνει χώρο στην ουρά, είτε με απενεργοποίηση ενός ή περισσοτέρων αντικειμένων είτε με πλήρη εκκαθάριση της ουράς.



ουρά προτεραιότητας στο c ++

Το BlockingQueue Interface στην Java δεν δέχεταιμηδενικόαξίες και ρίψηNullPointerExceptionεάν προσπαθήσετε να αποθηκεύσετε την τιμή null στην ουρά.Οι υλοποιήσεις Java BlockingQueue είναι ασφαλές νήμα . Όλες οι μέθοδοι ουράς είναι ατομικής φύσης και χρησιμοποιούν εσωτερικές κλειδαριές ή άλλες μορφές ελέγχου ταυτότητας.



Διάγραμμα κλάσης ουράς Java

Η διεπαφή Java Queue επεκτείνει τη διεπαφή συλλογής. Η διεπαφή Συλλογής επεκτείνει το Iterable interface. Ορισμένες από τις τάξεις υλοποίησης ουράς που χρησιμοποιούνται συχνά είναι LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,κλπ .. Το AbstractQueue παρέχει μια σκελετική εφαρμογή της διεπαφής ουράς για να μειώσει την προσπάθεια εφαρμογής της ουράς.

Τύποι BlockingQueue

Το BlockingQueue είναι δύο τύποι:



  • Χωρίς περιορισμούς ουρά: Η χωρητικότητα της ουράς αποκλεισμού θα οριστεί σε Integer.MAX_VALUE. Στην περίπτωση της μη περιορισμένης ουράς αποκλεισμού, η ουρά δεν θα μπλοκάρει ποτέ γιατί θα μπορούσε να αυξηθεί σε πολύ μεγάλο μέγεθος. όταν προσθέτετε στοιχεία αυξάνεται το μέγεθος.

Σύνταξη:
BlockingQueue blocking queue = νέο LinkedBlockingDeque ()

πώς να ρυθμίσετε το php
  • Οριοθετημένη ουρά: Ο δεύτερος τύπος ουράς είναι η οριοθετημένη ουρά. Στην περίπτωση της οριοθετημένης ουράς μπορείτε να δημιουργήσετε μια ουρά παρακάμπτοντας τη χωρητικότητα της ουράς στον κατασκευαστή ουρών:
    Σύνταξη:
    // Δημιουργεί μια ουρά αποκλεισμού με χωρητικότητα 5

BlockingQueue blocking queue = νέο LinkedBlockingDeque (5)

Μέθοδοι στη διασύνδεση BlockingQueue

ποια είναι η διαφορά μεταξύ xml και html
Αλλαγή τύπου Σύνταξη μεθόδου Που χρησιμοποιείται για Περιγραφή
boolean προσθήκη (E και) Εισαγωγή

Εισάγει το καθορισμένο στοιχείο σε αυτήν την ουρά εάν είναι δυνατόν να το κάνετε αμέσως χωρίς να παραβιάσετε τους περιορισμούς χωρητικότητας, να επιστρέψετε στην επιτυχία και να ρίξετε ένα IllegalStateException εάν δεν υπάρχει διαθέσιμος χώρος.

boolean περιέχει (αντικείμενο o) Εξετάζω

Επιστρέφει true αν αυτή η ουρά περιέχει το καθορισμένο στοιχείο.

int drainTo (Συλλογή γ) Ανάκτηση ή αφαίρεση

Καταργεί όλα τα διαθέσιμα στοιχεία από αυτήν την ουρά και τα προσθέτει στη δεδομένη συλλογή.

int drainTo (Συλλογή c, int maxElements) Ανάκτηση ή αφαίρεση

Καταργεί το μέγιστο τον δεδομένο αριθμό διαθέσιμων στοιχείων από αυτήν την ουρά και τα προσθέτει στη δεδομένη συλλογή.

boolean προσφορά (E και) Εισαγωγή

Εισάγει το καθορισμένο στοιχείο σε αυτήν την ουρά εάν είναι δυνατόν να το κάνετε αμέσως χωρίς να παραβιάσετε τους περιορισμούς χωρητικότητας, να επιστρέψετε αληθινός με επιτυχία και ψευδής εάν δεν υπάρχει διαθέσιμος χώρος.

boolean προσφορά (π.χ. e, longout, μονάδα TimeUnit) Εισαγωγή

Εισάγει το καθορισμένο στοιχείο σε αυτήν την ουρά, περιμένοντας τον καθορισμένο χρόνο αναμονής, εάν είναι απαραίτητο, για να καταστεί διαθέσιμος χώρος.

ΕΙΝΑΙ δημοσκόπηση (μακρύ χρονικό όριο, μονάδα TimeUnit) Ανάκτηση ή αφαίρεση

Ανακτά και αφαιρεί την κεφαλή αυτής της ουράς, περιμένοντας τον καθορισμένο χρόνο αναμονής, εάν είναι απαραίτητο, για να γίνει διαθέσιμο ένα στοιχείο.

κενός βάλτε (E ε) Εισαγωγή

Εισάγει το καθορισμένο στοιχείο σε αυτήν την ουρά, περιμένοντας εάν είναι απαραίτητο να διατεθεί χώρος.

int εναπομένουσα χωρητικότητα () Εξετάζω

Επιστρέφει τον αριθμό των πρόσθετων στοιχείων που μπορεί ιδανικά να αποδεχθεί αυτή η ουρά (ελλείψει περιορισμών μνήμης ή πόρων) χωρίς αποκλεισμό, ή Integer.MAX_VALUE εάν δεν υπάρχει εγγενές όριο.

boolean αφαίρεση (Object o) + Ανάκτηση ή αφαίρεση

Καταργεί μία μόνο παρουσία του καθορισμένου στοιχείου από αυτήν την ουρά,αν είναι παρόν.

ΕΙΝΑΙ παίρνω() Ανάκτηση ή αφαίρεση

Ανακτά και αφαιρεί την κεφαλή αυτής της ουράς, περιμένοντας αν χρειαστεί έως ότου γίνει διαθέσιμο ένα στοιχείο.

Διασύνδεση BlockingQueue σε Java Παράδειγμα: Υπηρεσία

package com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue δημόσια κλάση ProducerConsumerService {public static void main (String [] args) {// Δημιουργία BlockingQueue of size 10 BlockingQueue queue = new 10) Παραγωγός παραγωγός = νέος παραγωγός (ουρά) Καταναλωτής καταναλωτής = νέος καταναλωτής (ουρά) // αρχικός παραγωγός για την παραγωγή μηνυμάτων στην ουρά νέο νήμα (παραγωγός). Έναρξη () // αρχικός καταναλωτής να καταναλώνει μηνύματα από την ουρά νέο νήμα (καταναλωτής) .start () System.out.println ('Ο παραγωγός και ο καταναλωτής έχει ξεκινήσει')}}

τι κάνει το math.abs στην Ιάβα

Με αυτό, φτάνουμε στο τέλος του άρθρου BlockingQueue Interface σε Java. Ελπίζω ότι όλες οι έννοιες σας είναι τώρα ξεκάθαρες.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Τα μαθήματα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχουν σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου 'BlockingQueue Interface in Java' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.