我写了一个有几个类的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