少し変える

ImageIO#read(InputStream)は非同期に読み込みを行うのでなく、
ストリームが閉じられるまでブロッキングし画像が完成するのを待ってそれを返す。
閉じられるのを待つストリームはgnuplotからのものであるが、
そのきっかけはgnuplotへの出力の方が閉じられることによっている。
readメソッドを呼ぶ直前のout.close()によってストリームが閉じられると、
gnuplotは終了体勢に入りreadが読み込もうとしているストリームはgnuplot側で閉じられ、
readは作成した画像オブジェクトを返すことができるようになる。