一个会继续运行的线程?

时间:2014-05-02 19:18:10

标签: java android

我正在写一些Android代码, 这是结构:(伪)

public class AThread extends Thread {
  public void run() {
    int i = 0;
    while(true){
      i++;
      System.out.println(i);
    }  
  }
}

然后我新建了AThread类的实例并调用了start()方法。 我的问题是: int i似乎不会继续添加while循环。 为什么是原因以及如何让线程继续运行任务 写在while循环中。

因为我正在运行一些实时分析功能......

这是我写的实际内容:

    int i = 0;
    running = true;
    while(running) {
        i++;
        System.out.println(i);            
        if((lines = bufferedReader.readLine()) != null) {
            System.out.println("analyzing");
            // read two lines per time.
            result = filter(lines, bufferedReader.readLine());
            if(!result[0].equals("emp")) {
                System.out.println("x: " + result[0] + " " + "y: " + result[1]);
                System.out.println(MainActivity.analysisKeyPress.classify(Integer.valueOf(result[0]), Integer.valueOf(result[1]), "0"));
                System.out.println("insert into db..");
                MainActivity.dbhelper.addKeyLog(getCurrentRunningService(), result[0], result[1]);
            }
        }
    }

int i似乎只有BufferedReader有几行才会增加。{/ p>

2 个答案:

答案 0 :(得分:1)

如果你注释掉这部分:

result = filter(lines, bufferedReader.readLine());
if(!result[0].equals("emp")) {
    System.out.println("x: " + result[0] + " " + "y: " + result[1]);
    System.out.println(MainActivity.analysisKeyPress.classify(Integer.valueOf(result[0]), Integer.valueOf(result[1]), "0"));
    System.out.println("insert into db..");
    MainActivity.dbhelper.addKeyLog(getCurrentRunningService(), result[0], result[1]);
}

循环工作。

很明显,该部分中的某些方法会阻止您的代码。尝试运行调试器并逐步执行代码以查看代码停止执行的位置。这就是你的循环没有继续的原因。

答案 1 :(得分:1)

增加并输入索引后,您有一个readLine来电,这是一个等待操作。确保您的BufferedReader对象获得了预期获得的行。