我正在写一些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>
答案 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
对象获得了预期获得的行。