java 代码实现一条数据同一时间只能被一个人操作
时间: 2024-02-24 12:58:01 浏览: 30
以下是一个使用Java的ReentrantLock实现的示例代码,确保同时只有一个线程能够访问和修改data变量。
```java
import java.util.concurrent.locks.ReentrantLock;
public class MyThread implements Runnable {
private static int data = 0;
private static ReentrantLock lock = new ReentrantLock();
public void run() {
lock.lock();
try {
data++;
System.out.println("data = " + data);
} finally {
lock.unlock();
}
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread t1 = new Thread(myThread);
Thread t2 = new Thread(myThread);
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们定义了一个共享变量`data`和一个`ReentrantLock`对象`lock`,然后定义了一个`MyThread`类实现了`Runnable`接口。 在`run()`方法中,我们首先调用`lock()`方法请求锁,然后访问和修改共享变量`data`,最后调用`unlock()`方法释放锁。在`main()`方法中,我们创建两个线程并启动,然后等待它们执行结束。
由于使用了`ReentrantLock`,我们可以确保同时只有一个线程能够访问和修改`data`变量,从而避免了并发访问带来的问题。