一直以為 java 所有的 blocking operation 是可以用 thread.interrupt() method 中斷的,但是後來才發現 java 原本的 blocking IO library 是不支援 interrupt 的,例如去 read 一個 socket,然後用 thread.interrupt() 去中斷呼叫 read 的 thread,會發現 read 並沒有被中斷
新的 File library 像是 java.nio 才有支援 interrupt,而原本的 IO library 就要考慮其它的方式來中斷一個 blocking read,例如把 socket close,或是去 polling 是否 data available,若 data available 再呼叫 blocking read method
沒有留言:
張貼留言