Java多线程并发问题:锁、信号量和条件变量的应用示例
在Java中,线程同步主要通过以下几种机制实现:
锁(Synchronized):
class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int decrement() {
if (count > 0) {
count--;
return count;
}
throw new IllegalStateException("Counter is already at zero");
}
public synchronized int getCount() {
return count;
}
}
信号量(Semaphore):
Java标准库没有直接提供信号量,但可以通过CountDownLatch
和CyclicBarrier
等类间接实现。条件变量(Condition):
条件变量是与锁一起使用的同步工具。它们允许一个线程等待另一个线程满足特定条件后才能继续执行。
以上就是Java中锁、信号量和条件变量的简单应用示例。
还没有评论,来说两句吧...