使用java开发一个独立多线程互斥锁。
时间: 2023-12-14 14:38:26 浏览: 32
下面是一个简单的 Java 独立多线程互斥锁实现:
```java
public class Mutex {
private boolean locked = false;
public synchronized void lock() throws InterruptedException {
while (locked) {
wait();
}
locked = true;
}
public synchronized void unlock() {
locked = false;
notify();
}
}
```
上面的实现使用了 Java 的 synchronized 关键字来确保在任何时刻只有一个线程可以持有锁。lock() 方法会在锁已被持有时挂起线程,而 unlock() 方法会释放锁并唤醒等待的线程。
以下是如何使用它的示例:
```java
public class MyThread extends Thread {
private final Mutex mutex;
public MyThread(Mutex mutex) {
this.mutex = mutex;
}
@Override
public void run() {
try {
mutex.lock();
// 在这里执行一些需要互斥的代码
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
mutex.unlock();
}
}
}
public class Main {
public static void main(String[] args) {
Mutex mutex = new Mutex();
MyThread thread1 = new MyThread(mutex);
MyThread thread2 = new MyThread(mutex);
thread1.start();
thread2.start();
}
}
```
在这个例子中,两个线程都需要访问一些需要互斥的代码。由于 Mutex 类实现了互斥锁,所以同一时刻只会有一个线程执行这些代码,从而避免了竞态条件的问题。