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


11
ตัวดำเนินการ Java: จะได้รับการแจ้งเตือนอย่างไรโดยไม่ต้องปิดกั้นเมื่องานเสร็จสมบูรณ์?
สมมติว่าฉันมีคิวงานเต็มไปหมดซึ่งฉันต้องส่งไปที่บริการปฏิบัติการ ฉันต้องการให้พวกเขาประมวลผลทีละรายการ วิธีที่ง่ายที่สุดที่ฉันคิดได้คือ: รับงานจากคิว ส่งไปยังผู้ดำเนินการ โทร. รับอนาคตที่ส่งคืนและบล็อกจนกว่าผลลัพธ์จะพร้อมใช้งาน รับภารกิจอื่นจากคิว ... อย่างไรก็ตามฉันพยายามหลีกเลี่ยงการบล็อกโดยสิ้นเชิง หากฉันมี 10,000 คิวดังกล่าวซึ่งจำเป็นต้องมีการประมวลผลทีละงานฉันจะไม่มีพื้นที่สแต็กเนื่องจากส่วนใหญ่จะยึดไว้กับเธรดที่ถูกบล็อก สิ่งที่ฉันต้องการคือส่งงานและให้การติดต่อกลับซึ่งจะเรียกว่าเมื่องานเสร็จสมบูรณ์ ฉันจะใช้การแจ้งเตือนการโทรกลับเป็นธงในการส่งงานต่อไป (เห็นได้ชัดว่า functionaljava และ jetlang ใช้อัลกอริทึมที่ไม่ปิดกั้นดังกล่าว แต่ฉันไม่เข้าใจรหัสของพวกเขา) ฉันจะทำเช่นนั้นได้อย่างไรโดยใช้ java.util.concurrent ของ JDK ซึ่งย่อมาจากบริการเรียกใช้งานของฉัน (คิวที่ให้อาหารฉันงานเหล่านี้เองอาจบล็อก แต่นั่นเป็นปัญหาที่ต้องแก้ไขในภายหลัง)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.