Java 一个可以继续运行的线程?

Java 一个可以继续运行的线程?,java,android,Java,Android,我正在写一些Android代码, 结构如下:(伪) 然后我新建了一个AThread类的实例并调用start()方法。 我的问题是: 我似乎没有在while循环中不断添加int。 原因是什么?我如何使线程继续运行任务 写在while循环中 因为我正在运行一些实时分析功能 这是我写的一封信: int i = 0; running = true; while(running) { i++; System.out.println(i);

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

然后我新建了一个AThread类的实例并调用start()方法。 我的问题是: 我似乎没有在while循环中不断添加int。 原因是什么?我如何使线程继续运行任务 写在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]);
            }
        }
    }

在有几行可供
BufferedReader
读取之前,
int i
似乎不会增加。

如果您注释掉这部分:

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]);
}
循环将起作用


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

在增加并键入索引后,您有一个
readLine
调用,这是一个等待操作。确保你的
BufferedReader
对象得到了它期望得到的行。

你在
线程上调用了
.start()
?是的,我调用了.start()方法,但代码甚至不会编译。这只是一个干净的结构,可以快速了解我的情况,对不起,伙计。但是我添加了完整的块以进一步检查如果在第一次迭代之后有一个
wait()
语句,您希望它如何循环?是的,我试过了,现在它可以工作了。输入行来自运行以下命令的进程(Android):(getevent-l/dev/input/event2)。我将尝试调试您提到的块,现在感谢您的大力支持。
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]);
}