Java并发编程:Lock和Condition使用示例

原创 布满荆棘的人生 2024-12-08 04:06 150阅读 0赞

在Java并发编程中,LockCondition是两个重要的同步工具。下面分别给出它们的使用示例。

  1. Lock(锁):
  • ReentrantLock 是最常用的锁实现,它具有公平性和可重入性。

示例代码:

  1. import java.util.concurrent.locks.ReentrantLock;
  2. public class LockExample {
  3. private final ReentrantLock lock = new ReentrantLock();
  4. public void criticalSection() {
  5. try {
  6. // 获取锁
  7. lock.lock();
  8. // 执行临界区操作
  9. System.out.println("Critical section is executing.");
  10. // 释放锁
  11. lock.unlock();
  12. } catch (InterruptedException e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. public static void main(String[] args) {
  17. LockExample example = new LockExample();
  18. example.criticalSection();
  19. }
  20. }
  1. Condition(条件):
  • Variable 类是与条件相关的变量。
  • ConditionalVariableSemaphore 是实现条件的两种方式。

示例代码:

  1. import java.util.concurrent.locks.Condition;
  2. import java.util.concurrent.locks.Lock;
  3. import java.util.concurrent.locks.ReentrantLock;
  4. public class ConditionExample {
  5. private final Lock lock = new ReentrantLock();
  6. private final Condition condition = lock.newCondition();
  7. public void criticalSection() throws InterruptedException {
  8. lock.lock();
  9. try {
  10. // 设置条件
  11. condition.signalAll();
  12. System.out.println("Signalling all threads.");
  13. // 等待条件
  14. while (!condition.await(1, TimeUnit.SECONDS)))) {
  15. System.out.println("Waiting for condition signal.");
  16. }
  17. System.out.println("Condition has been signalled and thread is waiting.");
  18. } finally {
  19. lock.unlock();
  20. }
  21. }
  22. public static void main(String[] args) {
  23. ConditionExample example = new ConditionExample();
  24. example.criticalSection();
  25. }
  26. }

以上示例展示了如何使用LockCondition进行Java并发编程。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,150人围观)

还没有评论,来说两句吧...

相关阅读