2016-12-15 50 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中的空格...然后设置并禁用简易编辑模式!

相关问题