使用java语言,实现一个叫Lock类,这个类是一个多线程互斥锁,实现加锁与解锁两大功能,
时间: 2023-10-28 12:04:27 浏览: 34
好的,以下是一个简单的Java实现:
```java
public class Lock {
private boolean isLocked = false;
public synchronized void lock() throws InterruptedException{
while(isLocked){
wait();
}
isLocked = true;
}
public synchronized void unlock(){
isLocked = false;
notify();
}
}
```
在这个实现中,我们使用了内置的Java关键字`synchronized`来实现线程互斥。当一个线程调用`lock()`方法时,如果锁已经被其他线程持有,则它会进入等待状态,直到锁被释放。当一个线程调用`unlock()`方法时,它会释放锁,并通知其他线程,让它们继续执行。
使用这个Lock类的示例代码如下:
```java
public class Example {
private Lock lock = new Lock();
public void doSomething(){
try {
lock.lock();
// 这里是需要互斥的代码
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}
```
在这个示例中,我们创建了一个Example类,并在其中使用了Lock类来保护需要互斥执行的代码。当我们调用`doSomething()`方法时,它会先获取锁,然后执行需要互斥的代码,最后释放锁。这样,我们就可以确保这段代码在任何时候只会被一个线程执行。