android,java中如何对标志位上锁
时间: 2024-09-28 07:11:47 浏览: 16
在Android或Java中,对标志位(Flag)进行上锁通常是通过使用`synchronized`关键字来实现互斥访问,保证在任何时候只有一个线程能够更改状态。以下是一个简单的例子:
假设我们有一个标志位`isRunning`,我们希望在关闭程序时确保其他线程不会误认为程序还在运行:
```java
private volatile boolean isRunning = true; // 标志位
public synchronized void stop() {
if (!isRunning) {
return;
}
isRunning = false; // 设置停止状态
notifyAll(); // 唤醒等待的线程
}
public synchronized void checkAndRunTask() {
while (isRunning) {
try {
wait(); // 等待直到isRunning变为false
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 执行任务
}
```
在这个例子中,`stop()`方法会先检查`isRunning`,然后设置并唤醒等待的线程。而`checkAndRunTask()`方法会在`isRunning`为真时进入等待,只有当`stop()`调用后,它才会继续执行。
阅读全文