2016-12-15 81 views
0

我寫了一個有幾個類的java應用程序。Java應用程序在控制檯中被阻止

一類是與方法的主題:

@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此應用中,萬物做工精細幾個小時。沒有輸入,什麼都不會被阻止。如果我提供了一個輸入,我的應用程序就會做它應該做的事情。

但只要我把我的代碼在一個jar文件,將其上傳到服務器上,運行 Java版本 「1.8.0_111」 的Java(TM)SE運行時環境(建1.8.0_111-B14) 的Java熱點(TM)客戶端虛擬機(建設25.111-B14,混合模式)

我的應用程序運行可以說30分鐘,然後它突然開始阻止沒有任何輸入。 當我單擊命令行並輸入例如一個空格時,我的應用程序突然間崩潰......然後在一秒鐘後再次阻塞,直到我在命令行中再次按空格或另一個鍵。它像被迷惑了一樣。

有人在這裏請有一個想法可能是什麼問題在這裏? 這是一個VM問題嗎?我剛剛啓動我的程序與java -jar application.jar

+1

可能是一個被詛咒的虛擬機。 @Tom只會阻止單獨的線程,因爲它應該是。他擔心他的整個應用程序(其他線程)阻塞(我們沒有看到代碼)。 – Kayaman

+0

@Kayaman哦,好吧,錯過了他的整個應用程序塊,而不是隻有線程。謝謝。 – Tom

+0

這個問題似乎不太可能出現在這個特定的代碼中。您可以使用VisualVM連接到服務器上正在運行的應用程序,並在開始表現異常時查看發生了什麼。您還可以顯示其他代碼,即您看到開始「阻止」的代碼。 – Kayaman

回答

0

我可以解決它。 ALT + cmd.exe中的空格...然後設置並禁用簡易編輯模式!

相關問題