プログラムを実行中に非同期にユーザからのキー操作を受けたいというような時は,I/Oのために別スレッドを立ち上げる. System.in を引数として InputStreamReader を作るのが簡単だが,スレッドの終わらせ方ではまってしまったのでメモしておく. 誤った実装の例 public class MainClass { public void func() { Thread commandReceiver = new Thread(new CommandReceiver()); commandReceiver.start(); // do something commandReceiver.interrupt(); } // I/O処理用スレッド private class CommandReceiver implements Runnable { @Override public