คำถามติดแท็ก concurrent-programming

8
มี Mutex ใน Java หรือไม่?
มีวัตถุ Mutex ใน java หรือวิธีสร้างหรือไม่? ฉันกำลังถามเนื่องจากวัตถุ Semaphore ที่เริ่มต้นด้วยใบอนุญาต 1 ใบไม่ได้ช่วยฉัน ลองนึกถึงกรณีนี้: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } หากมีข้อยกเว้นเกิดขึ้นเมื่อได้รับครั้งแรกการเปิดตัวในบล็อกจับจะเพิ่มการอนุญาตและสัญญาณไม่ได้เป็นสัญญาณไบนารีอีกต่อไป วิธีที่ถูกต้องจะเป็นอย่างไร try { semaphore.acquire(); //do stuff } catch (Exception e) { //exception stuff } finally { semaphore.release(); } รหัสข้างต้นจะทำให้มั่นใจได้ว่าสัญญาณจะเป็นไบนารีหรือไม่?

9
การใช้ yield () หลักคืออะไรและแตกต่างจาก join () และ interrupt () อย่างไร?
ฉันสับสนเล็กน้อยเกี่ยวกับการใช้yield()วิธีการใน Java โดยเฉพาะในโค้ดตัวอย่างด้านล่าง ฉันยังอ่านว่า yield () คือ 'ใช้เพื่อป้องกันการดำเนินการของเธรด' คำถามของฉันคือ: ฉันเชื่อว่าโค้ดด้านล่างให้ผลลัพธ์เดียวกันทั้งเมื่อใช้yield()และเมื่อไม่ใช้งาน ถูกต้องหรือไม่ ที่จริงแล้วการใช้งานหลักคือyield()อะไร? ในสิ่งที่วิธีคือyield()แตกต่างจากjoin()และinterrupt()วิธีการ? ตัวอย่างรหัส: public class MyRunnable implements Runnable { public static void main(String[] args) { Thread t = new Thread(new MyRunnable()); t.start(); for(int i=0; i<5; i++) { System.out.println("Inside main"); } } public void run() { for(int i=0; i<5; i++) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.