jlineのpromptが非同期でメッセージを出力すると動作がおかしくなります
具体的には、ConsoleReader#setPrompt(String)で指定している文字の後に非同期で出力したメッセージが表示されてしまいます。
どうすればいいでしょうか?
同期実行されている場合はこのようにはなりません。
Java
1 public static void main(String args[]) { 2 try { 3 final ConsoleReader reader = new ConsoleReader(); 4 reader.setExpandEvents(false); 5 6 while (true) { 7 String line = reader.readLine(">"); 8 if (line != null) { 9 if (line.split(" ")[0].equalsIgnoreCase("copy")) { 10 System.out.println("Start Copy Thread"); 11 Thread thread = new Thread(new Runnable() { 12 @Override 13 public void run() { 14 // Dummy 15 try { 16 Thread.sleep(1000); 17 } catch (InterruptedException e) { 18 e.printStackTrace(); 19 } 20 System.out.println("End Copy Thread"); 21 } 22 }); 23 thread.start(); 24 } 25 } 26 } 27 } catch (Throwable t) { 28 t.printStackTrace(); 29 } 30 }
期待する動作
下記のようにプロンプト部分「>」に出力された文字がかぶらないようにしたいです。
常に一番下の行にプロンプト部分「>」が来るようにしたいです。
copy
Start Copy Thread
End Copy Thread
回答2件
あなたの回答
tips
プレビュー