Upload
feoras
View
42
Download
0
Embed Size (px)
DESCRIPTION
Looking up IP. 357335 - Network programming Asst. Prof. Dr. Choopan Rattanapoka. ทบทวน OSI layer. Application. Presentation. โปรแกรม network. Session. Transport. TCP, UDP. Network. IP. Data Link. Ethernet. Physical. UTP. Ethernet Header. Preamble. Dst MAC. Src MAC. Type. - PowerPoint PPT Presentation
Citation preview
JAVA THREAD 2030523313 - Network programmingAsst. Prof. Dr. Choopan Rattanapoka
DeadLock (1) Deadlock ท่ีสถานการณ์ท่ีเมื่อมี thread จำานวนตัง้แต่ 2 ตัวขึ้นไป ถกู
block ตลอดเวลาเพื่อรอกันเอง
Deadlock (2)
Producer-Consumer Problem
ปัญหา producer-consumer problem คือ ผู้ผลิต (producer) ผลิตสนิค้าแล้วนำาไปเก็บในโกดังสนิค้า
(warehouse) ผู้บรโิภค (consumer) จะนำาสนิค้าออกมาจากโกดัง Warehouse จะเก็บสนิค้าได้แค่ 1 ชิน้ Producer จะต้องรอ ไมผ่ลิตของถ้าโกดังเต็ม Consumer จะต้องรอ ไมน่ำาสนิค้าออกจากโกดังถ้าโกดังวา่ง
เวลาในการผลิตหรอืนำาสนิค้าออกจะสุม่ระหวา่ง 0 – 999 ms
warehouse
Producer Consumer
Class : Warehouse (v.1)
Class: Producer (v.1)
Class: Consumer (v.1)
Class : ProducerConsumer (main)
Deadlock…??!!
เขยีนผิดตรงไหน เนี่ย ??!
แก้: Warehouse (v.2)
แก้: Producer (v.2)
แก้: Consumer (v.2)
คิดยงัไงกับโปรแกรม น้ี ??
Wait/Notify/NotifyAll Thread เมื่อจำาเป็นจะต้องรอขอ้มูลอะไรท่ีอาจจะกินเวลา สามารถ
เรยีกใชง้านเมธอด wait() เพื่อใหห้ยุดรอจนกวา่จะมกีารแจง้จากThread อ่ืน
notify() เป็นเมธอดสำาหรบัสง่สญัญาณให้ Thread 1 ตัว เพื่อ ใหต่ื้นจากการ wait()
notifyAll() เป็นเมธอดสำาหรบัสง่สญัญาณใหท้กุ Thread ท่ี อยูใ่นสถานะ wait ใหต่ื้นขึ้นเพื่อทำางาน
แก้: Warehouse (v.3) ใช้ Class Producer และ Consumer ของ
v.1
ปัญหา Classic Dining Philosophers
มนีักปรชัญาอยู่ 5 คน นัง่บนโต๊ะกลม มสีอ้มอยูทั่ง้หมด 5 อัน นักปรชัญาจะมวีงการทำางานคือ
คิด (think) หวิ (hungry) กิน (eat)
การท่ีนักปรชัญาจะกินได้ จะต้องหยบิสอ้มด้านซา้ย และด้านขวา ของตัวเองเท่านัน้ และต้องหยบิได้ทัง้ 2 อันถึงจะสามารถกินได้
ตัวชว่ย : ถ้าต้องการกินแล้วไมไ่ด้สอ้มทัง้ 2 อันใหก้ลับไปคิดต่อ