>>284
System.iinのInputStreamだのSocketInputStreamだのは、readしよう
としたときに、何も入力されていなければ何か入力されるまでずっとブ
ロック状態になるのよ。で、なんか入力されたら、その入力をreadして
ブロックが解除になる。

final StringBuffer buf = new StringBuffer();
Thead th = new Thread(){
 public void run(){
  while(true){
   try{
    buf.append((char)(System.in.read()&0xFF));
    System.out.println(buf.toString());
   }
   catch(IOException e){}
  }
 }
};
th.start();

とか、やってみそ。
このままだとプログラムの終了条件がないから、とめたいときには
killしないといかんけど。

あとは、read専用スレッドと、メインの処理スレッドの同期の問題
があるので、その辺はThreadプログラミングの初歩の勉強が必要。

個人的には、こんなことをするよりイベントドリブンなフレームワーク
が完成しているAWTやSwingを使うほうが楽だと思うがな。