java 线程 while循环_java多线程中while循环的问题
时间: 2023-10-22 20:33:02 浏览: 93
在 Java 多线程中,使用 while 循环是一种常见的方式来实现线程的轮询操作。在多线程中,我们经常需要持续检查某个条件是否满足,如果不满足则等待一段时间再次检查。这种操作可以使用 while 循环来实现。
例如,我们可以在一个线程中使用 while 循环来等待另一个线程完成某个任务:
```
public class ThreadDemo {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
while (!thread.isDone()) {
// do something else
}
System.out.println("Thread is done.");
}
}
class MyThread extends Thread {
private boolean done = false;
@Override
public void run() {
// do some time-consuming task
this.done = true;
}
public boolean isDone() {
return done;
}
}
```
在这个例子中,我们创建了一个 MyThread 类来执行一个耗时的操作,并提供了一个 isDone() 方法来检查该操作是否已完成。在主线程中,我们使用 while 循环不断检查 MyThread 是否已完成操作,如果没有则继续执行其他操作。当 MyThread 完成操作后,isDone() 方法会返回 true,while 循环将停止,程序输出 "Thread is done."。
需要注意的是,在使用 while 循环时需要注意线程安全的问题。如果多个线程同时访问同一个变量,可能会导致竞态条件等问题。可以使用 synchronized 等机制来解决线程安全问题。
阅读全文