{"id":30387,"date":"2022-06-07T22:02:13","date_gmt":"2022-06-07T20:02:13","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=30387"},"modified":"2024-11-27T15:04:24","modified_gmt":"2024-11-27T14:04:24","slug":"java-blockingdeque","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/algorithmen\/java-blockingdeque\/","title":{"rendered":"BlockingDeque-Interface in Java (mit Beispiel)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Das Interface <code>java.util.concurrent.BlockingDeque<\/code> erweitert das <a href=\"\/de\/algorithmen\/java-deque\/\">Deque-Interface<\/a> um zus\u00e4tzliche blockierende Operationen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Dequeue-Operationen, die beim Entnehmen eines Elements aus einem <em>leeren<\/em> Deque so lange warten, bis ein Element verf\u00fcgbar ist (also darauf, dass ein anderer Thread eines einf\u00fcgt).<\/li><li>Enqueue-Operationen, die beim Einf\u00fcgen eines Elements in ein <em>volles<\/em>\u00b9 Deque so lange blockieren, bis wieder Platz verf\u00fcgbar ist (also, bis ein anderer Thread ein Element entnommen hat).<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>BlockingDeque<\/code> erweitert au\u00dferdem <a href=\"\/de\/algorithmen\/java-blockingqueue\/\">BlockingQueue<\/a>, und indirekt \u2013 sowohl \u00fcber <code>Deque<\/code> als auch \u00fcber <code>BlockingQueue<\/code> \u2013 die <a href=\"\/de\/algorithmen\/java-queue\/\">Queue<\/a>- und Collection-Interfaces:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-800x500.png\" alt=\"BlockingDeque: Interface- und Klassenhierarchie (UML-Klassendiagramm)\" class=\"wp-image-30517\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-800x500.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-224x140.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-336x210.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-504x315.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-672x420.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-400x250.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-600x375.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-944x590.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy-1200x750.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-BlockingDeque-interface-class-hierarchy.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>BlockingDeque: Interface- und Klassenhierarchie<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"hc-footnote wp-block-paragraph\">\u00b9 Ein Deque ist voll, wenn es gr\u00f6\u00dfenbeschr\u00e4nkt (bounded) ist und die Anzahl der in das Deque eingef\u00fcgten Elemente die festgelegte Deque-Kapazit\u00e4t erreicht hat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-blockingdeque-methoden\">Java BlockingDeque-Methoden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die blockierenden Methoden gibt es in jeweils zwei Varianten: eine, die unbegrenzt lange wartet und eine, der man einen Timeout mitgeben kann. Wenn dieser abl\u00e4uft, bricht die Methode ab und liefert einen Fehlercode zur\u00fcck.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Methoden, die <code>BlockingDeque<\/code> von <code>BlockingQueue<\/code> erbt (z. B. Einf\u00fcgen am Ende, Entnahme am Kopf), wurden der Konsistenz halber mit neuen Namen zus\u00e4tzlich definiert \u2013 beispielsweise <code>BlockingQueue.put()<\/code> als <code>BlockingDeque.putLast()<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der folgenden Auflistung der Methoden f\u00fchre ich diese <code>BlockingQueue<\/code>-Methoden jeweils bei den \u00e4quivalenten <code>BlockingDeque<\/code>-Methoden mit an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Am Ende des Kapitels findest du zwei Tabellen, in der noch einmal alle Methoden \u00fcbersichtlich zusammengefasst sind.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"blockierende-methoden-zum-einfuegen-in-das-deque\">Blockierende Methoden zum Einf\u00fcgen in das Deque<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zun\u00e4chst eine grafische Darstellung der blockierenden Enqueue-Methoden:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"110\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-800x110.png\" alt=\"Blockierende Methoden zum Einf\u00fcgen in ein Deque: putFirst(), putLast(), offerFirst(), offerLast()\" class=\"wp-image-30470\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-800x110.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-224x31.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-336x46.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-504x69.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-672x92.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-400x55.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-600x83.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-944x130.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast-1200x165.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-putFirst-offerFirst-putLast-offerLast.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Blockierende Methoden zum Einf\u00fcgen in ein Deque<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">BlockingDeque.putFirst() + putLast()<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Die Methoden <code>putFirst()<\/code> und <code>putLast()<\/code> f\u00fcgen ein Element am Anfang bzw. Ende des Deques ein, sofern Platz vorhanden ist. Ist das Deque hingegen voll, blockieren diese Methoden so lange, bis ein anderer Thread ein Element entnommen hat und somit wieder Platz f\u00fcr das neue Element vorhanden ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die vom <code>BlockingQueue<\/code>-Interface geerbte Methode <code>BlockingQueue.put()<\/code> wird zu <code>BlockingDeque.putLast()<\/code> weitergeleitet.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">BlockingQueue.offerFirst() + offerLast() mit Timeout<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Auch <code>offerFirst()<\/code> und <code>offerLast()<\/code> f\u00fcgen ein Element in das Deque ein, sofern Platz vorhanden ist. Andernfalls blockieren diese Methoden f\u00fcr maximal die angegebene Zeit. Konnte nach Ablauf dieser Zeit das Element nicht eingef\u00fcgt werden, geben diese Methoden <code>false<\/code> zur\u00fcck. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die vom <code>BlockingQueue<\/code>-Interface geerbte Methode <code>BlockingQueue.offer(E e, long timeout, TimeUnit unit)<\/code> wird zu <code>BlockingDeque.offerLast(E e, long timeout, TimeUnit unit)<\/code> weitergeleitet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"blockierende-methoden-zum-entnehmen-aus-dem-deque\">Blockierende Methoden zum Entnehmen aus dem Deque <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zun\u00e4chst wieder eine grafische Darstellung der blockierenden Dequeue-Methoden:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"128\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-800x128.png\" alt=\"Blockierende Methoden zum Entnehmen aus einem Deque: takeFirst(), takeLast(), pollFirst(), pollLast()\" class=\"wp-image-30471\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-800x128.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-224x36.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-336x54.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-504x80.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-672x107.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-400x64.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-600x96.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-944x150.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast-1200x191.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/java-blockingdeque-takeFirst-pollFirst-takeLast-pollLast.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Blockierende Methoden zum Entnehmen aus einem Deque<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">BlockingQueue.takeFirst() + takeLast()<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>takeFirst()<\/code> und <code>takeLast()<\/code> entnehmen ein Element vom Anfang bzw. Ende des Deques, sofern das Deque nicht leer ist. Bei einem leeren Deque blockieren diese Methoden solange, bis ein anderer Thread ein Element einf\u00fcgt. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die vom <code>BlockingQueue<\/code>-Interface geerbte Methode <code>BlockingQueue.take()<\/code> wird zu <code>BlockingDeque.takeFirst()<\/code> weitergeleitet.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">BlockingQueue.pollFirst() + pollLast() mit Timeout<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Auch <code>pollFirst()<\/code> und <code>pollLast()<\/code> entnehmen ein Element vom Deque, sofern eines verf\u00fcgbar ist. Andernfalls warten die Methoden f\u00fcr die angegebene Zeit. Wenn innerhalb der Wartezeit ein Element eingef\u00fcgt wird, liefern die Methoden es sofort zur\u00fcck. Wenn nach Ablauf der Zeit noch immer kein Element vorhanden ist, geben diese Methoden <code>null<\/code> zur\u00fcck.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die vom <code>BlockingQueue<\/code>-Interface geerbte Methode <code>BlockingQueue.poll(E e, long timeout, TimeUnit unit)<\/code> wird zu <code>BlockingDeque.pollFirst(E e, long timeout, TimeUnit unit)<\/code> weitergeleitet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"blockingdeque-methoden-zusammenfassung\">BlockingDeque-Methoden \u2013 Zusammenfassung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Im folgenden findest du zwei Tabellen: die erste enth\u00e4lt die Methoden zum Einf\u00fcgen und Entnehmen von Elementen <em>am Kopf<\/em> des Deques; die zweite enth\u00e4lt die Methoden f\u00fcr die Elemente <em>am Ende<\/em> des Deques.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In den ersten zwei Spalten siehst du jeweils die <em>nicht blockierenden<\/em> Methoden, die <code>BlockingDeque<\/code> von <code>Deque<\/code> (und indirekt von <code>Queue<\/code> \u2013 diese sind mit einer hochgestellten 1 markiert) erbt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der dritten und vierten Spalte findest du jeweils die neuen, <em>blockierenden<\/em> Methoden (einschlie\u00dflich derer, die in <code>BlockingQueue<\/code> definiert sind \u2013 diese sind mit einer hochgestellten 2 markiert).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Operationen am Anfang (Kopf) des Deques<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th style=\"border-bottom:none\"><\/th><th colspan=\"2\" style=\"text-align:center;border-bottom:none\">Nicht blockierend<br>(geerbt von <code>Deque<\/code>)<\/th><th colspan=\"2\" style=\"text-align:center;border-bottom:none\">Blockierend<br>(neu in <code>BlockingDeque<\/code>)<\/th><\/tr><tr><th><\/th><th>Exception<\/th><th>R\u00fcckgabewert<\/th><th>Blockiert<\/th><th>Blockiert<br>mit Timeout<\/th><\/tr><\/thead><tbody><tr><td>Element<br>anh\u00e4ngen<br>(<em>enqueue<\/em>):<\/td><td><code>addFirst(E e)<\/code><br>&nbsp;<br>&nbsp;<\/td><td><code>offerFirst(E e)<\/code><br>&nbsp;<br>&nbsp;<\/td><td><code>putFirst(E e)<br>&nbsp;<br>&nbsp;<\/code><\/td><td><code>offerFirst(E e,<br>&nbsp; long timeout,<br>&nbsp; TimeUnit unit)<\/code><\/td><\/tr><tr><td>Element<br>entnehmen<br>(<em>dequeue<\/em>):<\/td><td><code>removeFirst()<br>&nbsp;<br>&nbsp;<br>remove()<\/code>\u00b9<br>&nbsp;<br>&nbsp;<\/td><td><code>pollFirst()<br>&nbsp;<br>&nbsp;<br>poll()<\/code>\u00b9<br>&nbsp;<br>&nbsp;<\/td><td><code>takeFirst()<br>&nbsp;<br>&nbsp;<br>take()<\/code>\u00b2<br>&nbsp;<br>&nbsp;<\/td><td><code>pollFirst(<br>&nbsp; long timeout,<br>&nbsp; TimeUnit unit)<br>poll(<br>&nbsp; long timeout,<br>&nbsp; TimeUnit unit)<\/code>\u00b2<\/td><\/tr><tr><td>Element<br>ansehen<br>(<em>examine<\/em>):<\/td><td><code>getFirst()<br>element()<\/code>\u00b9<\/td><td><code>peekFirst()<br>peek()<\/code>\u00b9<\/td><td>\u2013<\/td><td>\u2013<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Operationen am Ende des Deques<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th style=\"border-bottom:none\"><\/th><th colspan=\"2\" style=\"text-align:center;border-bottom:none\">Nicht blockierend<br>(geerbt von <code>Deque<\/code>)<\/th><th colspan=\"2\" style=\"text-align:center;border-bottom:none\">Blockierend<br>(neu in <code>BlockingDeque<\/code>)<\/th><\/tr><tr><th><\/th><th>Exception<\/th><th>R\u00fcckgabewert<\/th><th>Blockiert<\/th><th>Blockiert<br>mit Timeout<\/th><\/tr><\/thead><tbody><tr><td>Element<br>anh\u00e4ngen<br>(<em>enqueue<\/em>):<\/td><td><code>addLast(E e)<br>&nbsp;<br>&nbsp;<br>add(E e)<\/code>\u00b9<br>&nbsp;<br>&nbsp;<\/td><td><code>offerLast(E e)<br>&nbsp;<br>&nbsp;<br>offer(E e)<\/code>\u00b9<br>&nbsp;<br>&nbsp;<\/td><td><code>putLast(E e)<br>&nbsp;<br>&nbsp;<br>put(E e)<\/code>\u00b2<br>&nbsp;<br>&nbsp;<\/td><td><code>offerLast(E e,<br>&nbsp; long timeout,<br>&nbsp; TimeUnit unit)<br>offer(E e,<br>&nbsp; long timeout,<br>&nbsp; TimeUnit unit)<\/code>\u00b2<\/td><\/tr><tr><td>Element<br>entnehmen<br>(<em>dequeue<\/em>):<\/td><td><code>removeLast()<br>&nbsp;<br>&nbsp;<\/code><\/td><td><code>pollLast()<\/code><br>&nbsp;<br>&nbsp;<\/td><td><code>takeLast()<\/code><br>&nbsp;<br>&nbsp;<\/td><td><code>pollLast(<br>&nbsp; long timeout,<br>&nbsp; TimeUnit unit)<\/code><\/td><\/tr><tr><td>Element<br>ansehen<br>(<em>examine<\/em>):<\/td><td><code>getLast()<\/code><\/td><td><code>peekLast()<\/code><\/td><td>\u2013<\/td><td>\u2013<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00b9 Diese Methoden sind im <code>Queue<\/code>-Interface implementiert und rufen die entsprechenden <code>Deque<\/code>-Methoden auf.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00b2 Diese Methoden sind im <code>BlockingQueue<\/code>-Interface implementiert und rufen die entsprechenden <code>BlockingDeque<\/code>-Methoden auf.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-blockingdeque-beispiel\">Java BlockingDeque-Beispiel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Beispiel f\u00fcr die Benutzung des <code>BlockingDeque<\/code>-Interfaces findest du im Tutorial-Teil \u00fcber die einzige Implementierung dieses Interfaces: <a href=\"\/de\/algorithmen\/linkedblockingdeque-java\/\">LinkedBlockingDeque<\/a>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"zusammenfassung-und-ausblick\">Zusammenfassung und Ausblick<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Artikel hast du das <code>BlockingDeque<\/code>-Interface und dessen blockierenden Methoden <code>putFirst()<\/code>, <code>putLast()<\/code>, <code>offerFirst()<\/code>, <code>offerLast()<\/code>, <code>takeFirst()<\/code>, <code>takeLast()<\/code>, und <code>pollFirst()<\/code>, <code>pollLast()<\/code> kennengelernt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In den folgenden Teilen dieser Tutorialserie werde ich alle <code>Deque<\/code>- und <code>BlockingDeque<\/code>-Implementierungen mit ihren spezifischen Eigenschaften vorstellen. Am Ende findest du eine Empfehlung, <a href=\"\/de\/algorithmen\/java-deque-implementierungen\/\">wann du welche Implementierung einsetzen solltest<\/a>. Zum Abschluss des Tutorials zeige ich dir, wie du selbst ein <a href=\"\/de\/algorithmen\/deque-implementieren-array\/\">Deque in Java implementieren<\/a> kannst. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn du noch Fragen hast, stelle sie gerne \u00fcber die Kommentar-Funktion. M\u00f6chtest du \u00fcber neue Tutorials und Artikel informiert werden? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders.eu-Newsletter anzumelden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie benutzt man das BlockingDeque-Interface in Java? \u00dcbersicht \u00fcber alle blockierenden Methoden und Vergleich mit dem BlockingQueue-Interface.<\/p>\n","protected":false},"author":1,"featured_media":30478,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"Wie benutzt man das BlockingDeque-Interface in Java? \u00dcbersicht \u00fcber alle blockierenden Methoden und Vergleich mit dem BlockingQueue-Interface.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"none","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"both","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"blockingdeque,blocking deque","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[{"_seopress_pro_rich_snippets_type":"none"}],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"_uag_custom_page_level_css":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"","tag":"0","restrict_content":"0"},"_metis_text_type":"standard","_metis_text_length":6940,"_post_count":0,"footnotes":""},"categories":[127],"tags":[195],"class_list":["post-30387","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algorithmen","tag-datenstrukturen-deque"],"uagb_featured_image_src":{"full":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",1770,986,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",300,167,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",768,428,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",1024,570,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-224x125.jpg",224,125,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-336x187.jpg",336,187,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-504x281.jpg",504,281,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-672x374.jpg",672,374,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-400x223.jpg",400,223,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-600x334.jpg",600,334,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-800x446.jpg",800,446,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-944x526.jpg",944,526,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-1200x668.jpg",1200,668,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",1536,856,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/bricks-1846939_1770x986.jpg",1770,986,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Wie benutzt man das BlockingDeque-Interface in Java? \u00dcbersicht \u00fcber alle blockierenden Methoden und Vergleich mit dem BlockingQueue-Interface.","public_identification_id":"1f3125c2d651415cb714d22914b3173f","private_identification_id":"4c3df18a9c6948549a946051fa908179","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/30387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=30387"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/30387\/revisions"}],"predecessor-version":[{"id":41695,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/30387\/revisions\/41695"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/30478"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=30387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=30387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=30387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}