我正在编写一些 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
读取。
最佳答案
如果你注释掉这部分:
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]);
}
循环将工作。
很明显,该部分中的某些方法会阻止您的代码。尝试运行调试器并逐步执行代码以查看代码停止执行的位置。这就是你的循环不继续的原因。
关于java - 一个将继续运行的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435427/