Download pptx - Looking up IP

Transcript
Page 1: Looking up IP

JAVA THREAD 2030523313 - Network programmingAsst. Prof. Dr. Choopan Rattanapoka

Page 2: Looking up IP

DeadLock (1) Deadlock ท่ีสถานการณ์ท่ีเมื่อมี thread จำานวนตัง้แต่ 2 ตัวขึ้นไป ถกู

block ตลอดเวลาเพื่อรอกันเอง

Page 3: Looking up IP

Deadlock (2)

Page 4: Looking up IP

Producer-Consumer Problem

ปัญหา producer-consumer problem คือ ผู้ผลิต (producer) ผลิตสนิค้าแล้วนำาไปเก็บในโกดังสนิค้า

(warehouse) ผู้บรโิภค (consumer) จะนำาสนิค้าออกมาจากโกดัง Warehouse จะเก็บสนิค้าได้แค่ 1 ชิน้ Producer จะต้องรอ ไมผ่ลิตของถ้าโกดังเต็ม Consumer จะต้องรอ ไมน่ำาสนิค้าออกจากโกดังถ้าโกดังวา่ง

เวลาในการผลิตหรอืนำาสนิค้าออกจะสุม่ระหวา่ง 0 – 999 ms

warehouse

Producer Consumer

Page 5: Looking up IP

Class : Warehouse (v.1)

Page 6: Looking up IP

Class: Producer (v.1)

Page 7: Looking up IP

Class: Consumer (v.1)

Page 8: Looking up IP

Class : ProducerConsumer (main)

Deadlock…??!!

เขยีนผิดตรงไหน เนี่ย ??!

Page 9: Looking up IP

แก้: Warehouse (v.2)

Page 10: Looking up IP

แก้: Producer (v.2)

Page 11: Looking up IP

แก้: Consumer (v.2)

คิดยงัไงกับโปรแกรม น้ี ??

Page 12: Looking up IP

Wait/Notify/NotifyAll Thread เมื่อจำาเป็นจะต้องรอขอ้มูลอะไรท่ีอาจจะกินเวลา สามารถ

เรยีกใชง้านเมธอด wait() เพื่อใหห้ยุดรอจนกวา่จะมกีารแจง้จากThread อ่ืน

notify() เป็นเมธอดสำาหรบัสง่สญัญาณให้ Thread 1 ตัว เพื่อ ใหต่ื้นจากการ wait()

notifyAll() เป็นเมธอดสำาหรบัสง่สญัญาณใหท้กุ Thread ท่ี อยูใ่นสถานะ wait ใหต่ื้นขึ้นเพื่อทำางาน

Page 13: Looking up IP

แก้: Warehouse (v.3) ใช้ Class Producer และ Consumer ของ

v.1

Page 14: Looking up IP

ปัญหา Classic Dining Philosophers

มนีักปรชัญาอยู่ 5 คน นัง่บนโต๊ะกลม มสีอ้มอยูทั่ง้หมด 5 อัน นักปรชัญาจะมวีงการทำางานคือ

คิด (think) หวิ (hungry) กิน (eat)

การท่ีนักปรชัญาจะกินได้ จะต้องหยบิสอ้มด้านซา้ย และด้านขวา ของตัวเองเท่านัน้ และต้องหยบิได้ทัง้ 2 อันถึงจะสามารถกินได้

ตัวชว่ย : ถ้าต้องการกินแล้วไมไ่ด้สอ้มทัง้ 2 อันใหก้ลับไปคิดต่อ


Recommended