请举例说明Java中的线程同步(如synchronized关键字)是如何工作的。
在Java中,线程同步主要用于防止多个线程同时访问和修改共享资源,从而导致数据不一致或竞态条件等问题。
synchronized
关键字就是一个典型的线程同步手段。它通常用于修饰类的方法、代码块或者是声明锁的变量。
例如:
class Counter {
private int count = 0;
public synchronized void increment() {
count++;
notifyAll(); // 向等待的线程发出通知
}
public synchronized void decrement() {
if (count > 0) {
count--;
notifyAll(); // 向等待的线程发出通知
}
}
public synchronized int getCount() {
return count;
}
}
在这个例子中,Counter
类中的方法都使用了synchronized
关键字。这样,同一个时间只能有一个线程访问这些方法。
当一个线程调用increment
方法并获取锁后,它会增加count
变量的值,并向等待该操作完成的其他线程发出通知。
这种方式保证了数据的一致性和完整性,避免了竞态条件问题。
还没有评论,来说两句吧...