synchronized锁代码
时间: 2023-11-12 14:56:25 浏览: 68
synchronized关键字可以用于保证多个线程对共享资源的安全访问。当一个线程进入synchronized代码块时,它会尝试获取锁。如果该锁已经被其他线程持有,则进入等待状态,直到锁被释放。以下是使用synchronized锁代码的示例:
```java
public class MyClass {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
// 调用示例
public class Main {
public static void main(String[] args) {
MyClass myObj = new MyClass();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 100000; i++) {
myObj.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 100000; i++) {
myObj.increment();
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Count: " + myObj.getCount());
}
}
```
在上述示例中,MyClass类中的increment()和getCount()方法都被声明为synchronized。这样,在多个线程同时访问这些方法时,只有一个线程能够获取到对象的锁,保证了count变量的安全更新。
阅读全文