คำถามติดแท็ก countdownlatch

12
CountDownLatch ใช้ใน Java Multithreading อย่างไร
มีใครช่วยให้ฉันเข้าใจว่า Java CountDownLatchคืออะไรและใช้เมื่อใด? ฉันไม่มีความคิดที่ชัดเจนว่าโปรแกรมนี้ทำงานอย่างไร ฉันเข้าใจว่าทั้งสามเธรดเริ่มต้นพร้อมกันและแต่ละเธรดจะเรียก CountDownLatch หลังจาก 3000 มิลลิวินาที ดังนั้นการนับถอยหลังจะลดลงทีละคน หลังจากสลักกลายเป็นศูนย์โปรแกรมจะพิมพ์ "เสร็จสมบูรณ์" บางทีวิธีที่ฉันเข้าใจไม่ถูกต้อง import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class Processor implements Runnable { private CountDownLatch latch; public Processor(CountDownLatch latch) { this.latch = latch; } public void run() { System.out.println("Started."); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } …

14
Java เห็นพ้องด้วย: Countdown latch vs Cyclic barrier
ฉันอ่านผ่านjava.util.concurrent APIและพบว่า CountDownLatch: ตัวช่วยการซิงโครไนซ์ที่อนุญาตให้เธรดหนึ่งเธรดหรือมากกว่ารอจนกระทั่งชุดของการดำเนินการที่ดำเนินการในเธรดอื่นเสร็จสมบูรณ์ CyclicBarrier: เครื่องมือช่วยในการซิงโครไนซ์ที่อนุญาตให้ชุดของเธรดทั้งหมดรอให้กันและกันถึงจุดกีดขวางทั่วไป สำหรับฉันทั้งคู่ดูเหมือนเท่ากัน แต่ฉันมั่นใจว่ามีมากกว่านั้น CoundownLatch, the countdown value could not be reset, that can happen in the case of CyclicBarrierยกตัวอย่างเช่นใน มีความแตกต่างอื่น ๆ ระหว่างสองหรือไม่ ใครบ้างuse casesที่ต้องการรีเซ็ตค่าการนับถอยหลัง

6
CountDownLatch กับ Semaphore
มีประโยชน์จากการใช้ java.util.concurrent.CountdownLatch แทน java.util.concurrent.Semaphore ? เท่าที่ฉันสามารถบอกได้ว่าชิ้นส่วนต่อไปนี้เกือบจะเทียบเท่า: 1. สัญญาณ final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); } finally { sem.release(); } } }; t.start(); } sem.acquire(num_threads); 2: CountDownLatch …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.