Java使用同步锁,假设有三个线程(A、B、C)实现线程A执行完了才可以执行线程B,C执行完了再可以执行C,如有四个线程以此类推
时间: 2024-05-07 20:23:11 浏览: 11
可以使用Java中的wait()和notify()方法来实现线程同步。具体实现方式如下:
1. 定义一个共享的对象锁,例如:
```
private final Object lock = new Object();
```
2. 在线程A执行完后,调用lock对象的wait()方法,让线程B和C等待:
```
synchronized(lock) {
// 线程A的代码
lock.wait();
}
```
3. 在线程B和C执行完后,调用lock对象的notify()方法,唤醒线程A:
```
synchronized(lock) {
// 线程B或C的代码
lock.notify();
}
```
4. 如果有四个线程以此类推,可以使用一个计数器来跟踪当前执行到哪个线程,例如:
```
private int count = 1;
// 线程A的代码
synchronized(lock) {
while(count != 1) {
lock.wait();
}
// 线程A的执行代码
count++;
lock.notifyAll();
}
// 线程B的代码
synchronized(lock) {
while(count != 2) {
lock.wait();
}
// 线程B的执行代码
count++;
lock.notifyAll();
}
// 线程C的代码
synchronized(lock) {
while(count != 3) {
lock.wait();
}
// 线程C的执行代码
count++;
lock.notifyAll();
}
// 线程D的代码
synchronized(lock) {
while(count != 4) {
lock.wait();
}
// 线程D的执行代码
count++;
lock.notifyAll();
}
```
这样就可以实现线程间的同步,保证线程A执行完后才能执行线程B和C,线程B和C执行完后才能执行线程D,以此类推。