【问题标题】:Why isn't the following code printing values run time?为什么以下代码打印值不运行时间?
【发布时间】:2014-07-20 21:30:19
【问题描述】:

由于 cat /proc/meminfo 提供了动态详细信息,我想更新文本区域系统值的更改。我尝试了以下。但不起作用。请帮助

Thread th=new Thread(new Runnable() {
public void run() {
while(true)
{
  try{
       p = Runtime.getRuntime().exec("cat /proc/meminfo");
         BufferedReader br = new BufferedReader(
                     new InputStreamReader(p.getInputStream()));
                 while ((s = br.readLine()) != null)
                 {
                     textArea.append(s+"\n");
                 }
                 p.waitFor();
                 p.destroy();
      }
      catch(Exception e)
      {

      }
 }
});     

【问题讨论】:

  • 我用 System.out.println 替换了 testArea.append,它按预期工作。您可能需要详细说明
  • 但是输出太长了,我想一行一行的打印出来,那我该如何管理呢?
  • 如果输出太长,考虑用输出替换'textArea'的内容,而不是追加。另外,我会限制速度,使用 Thread.sleep 或类似的

标签: java linux multithreading ubuntu memory-management


【解决方案1】:

据我所知,textArea 没有做任何事情。要在 Java 中打印值,请使用 System.out.println

你可以替换:

textArea.append(s+"\n");

与:

System.out.print(s+"\n");

或者更简单:println 自动在您的文本后追加一个新行:

System.out.println(s);

另一个问题是readLine 方法可能会挂起您的程序。如果是这种情况,请使用调试器单步执行。

【讨论】:

  • 但是输出太长了,我想一行一行的打印出来,那我该如何管理呢?
  • 我的意思是我想在框架文本区域打印。但 System.out 只会在控制台中打印它
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2021-04-09
相关资源
最近更新 更多