タイムアウトで java.io.InputStream から読み取りたい。どうやらこれを行う正しい方法は、java.nio.channels.SelectableChannel と java.nio.channels.Selector を使用することです。残念ながら、InputStream から SelectableChannel に移行する方法は明確ではありません。
InputStream は、従来とは異なるソースから来ています -- http://java.sun.com/products/javacomm/reference/api/javax/comm/CommPort.html#getInputStream()