我寫了一個有幾個類的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
可能是一個被詛咒的虛擬機。 @Tom只會阻止單獨的線程,因爲它應該是。他擔心他的整個應用程序(其他線程)阻塞(我們沒有看到代碼)。 – Kayaman
@Kayaman哦,好吧,錯過了他的整個應用程序塊,而不是隻有線程。謝謝。 – Tom
這個問題似乎不太可能出現在這個特定的代碼中。您可以使用VisualVM連接到服務器上正在運行的應用程序,並在開始表現異常時查看發生了什麼。您還可以顯示其他代碼,即您看到開始「阻止」的代碼。 – Kayaman