2016-12-15 2 views
0

Я написал приложение Java, которое имеет несколько классов.Приложение Java блокируется в консоли

Один класс является Thread с этим методом:

@Override 
public void run() { 
    Scanner scanner = new Scanner(System.in); 
    String input = scanner.next(); 
    coins = Double.valueOf(input); 
    maximumPrice = Double.valueOf(scanner.next()); 
    while (!isInterrupted()) { 
     input = scanner.nextLine(); 
     if ("stop".equals(input) || "sell".equals(input) || "panic".equals(input)) { 
      System.out.println("here"); 
      commandRelevant = true; 
      commandValue = input; 
      interrupt(); 
     } 
     if (input.contains("override")) { 
      commandRelevant = true; 
      if (input.contains("positive")) { 
       commandValue = "positive"; 
      } else if (input.contains("negative")) { 
       commandValue = "negative"; 
      } else if (input.contains("activate")) { 
       commandValue = "activate"; 
      } else if (input.contains("unpredictable")) { 
       commandValue = "unpredictable"; 
      } else { 
       commandValue = "neutral"; 
      } 
     } 
     if (input.contains("setPrice")) { 
      commandRelevant = true; 
      commandValue = input; 
     } 
    } 
} 

Вся моя программа на самом деле работает независимо друг от друга к этому классу. Только один класс доступа этот поток класса с геттер

public boolean commandRelevant() { 
    return commandRelevant; 
} 

Моя проблема заключается в:

Когда я запускаю это приложение в моем IDE, Everythings отлично работает в течение нескольких часов. Нет ввода, ничего не будет заблокировано. Если я даю вход, мое приложение делает то, что должно.

Но как только я положил код в файле фляги, загрузите его на сервер, работающий Java версии "1.8.0_111" Java (TM) SE Runtime Environment (сборка 1.8.0_111-B14) Java HotSpot (TM) Client VM (сборка 25.111-b14, смешанный режим)

мое приложение работает, давая сказать 30 минут, а затем оно внезапно начинает блокировать без любого входа. Когда я нажимаю на командную строку и вводим, например, просто пробел, который вызывает мое приложение cotinues ... затем снова блокируется через секунду, пока я не нажму пробел или еще один ключ в командной строке. Это как заколдованный.

Кто-нибудь здесь, пожалуйста, подумайте, что может быть проблемой здесь? Это проблема VM? Я только начинаю свою программу с java -jar application.jar

+1

Может быть проклятой ВМ. @Tom, который блокирует только отдельный поток, как и предполагалось. Он беспокоится о блокировке своего приложения (других потоков) (для которого мы не видим код). – Kayaman

+0

@ Kayaman Ой, пропустил, что все его приложения блокируют, а не только поток. Благодарю. – Tom

+0

Кажется маловероятным, что проблема связана с этим конкретным кодом. Вы можете использовать VisualVM для подключения к запущенному приложению на сервере и посмотреть, что происходит, когда он начинает вести себя странно. Вы также можете показать другой код, который вы видите, начинаете «блокировать». – Kayaman

ответ

0

Я мог бы решить эту проблему. ALT + Space в cmd.exe ... затем настройки и деактивировать простой режим редактирования!

Смежные вопросы