hutool LockUtil工具类给代码加锁
时间: 2024-06-06 10:04:48 浏览: 359
Hutool是一个Java工具包,提供了很多常用的工具类,其中也包括LockUtil工具类,用于代码加锁。使用LockUtil可以方便地实现对某一段代码的互斥访问,从而保证线程安全。下面是使用LockUtil工具类对代码进行加锁的示例:
```
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.lock.LockUtil;
import cn.hutool.lock.LockUtil.Lock;
public class LockDemo {
public static void main(String[] args) {
// 创建10个线程,同时访问共享资源
for (int i = 0; i < 10; i++) {
Thread thread = new Thread(() -> {
// 获取锁
Lock lock = LockUtil.lock("lockName");
try {
// 模拟业务处理,随机等待一段时间
ThreadUtil.sleep(RandomUtil.randomInt(1000));
// 输出线程名和当前时间
System.out.println(StrUtil.format("{} - {}", Thread.currentThread().getName(), System.currentTimeMillis()));
} finally {
// 释放锁
LockUtil.unlock(lock);
}
});
thread.setName("Thread-" + i);
thread.start();
}
}
}
```
在上面的示例中,我们创建了10个线程,每个线程都会获取名为"lockName"的锁,并在处理业务前等待一段随机时间,以模拟实际业务处理的情况。当一个线程获取到锁后,其他线程将会等待,直到该线程释放锁。这样就保证了对共享资源的互斥访问。
阅读全文