首页 > 编程语言 > 详细

java 多线程 Thread 锁ReentrantLock;Condition等待与通知

时间:2021-04-25 10:19:28      阅读:13      评论:0      收藏:0      [点我收藏+]

1,介绍:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
 
在JAVA的多线程编程中,我们可以使用synchronized关键字来实现线程之间的同步互斥,但是JDK1.5中新增了ReentrantLock类同样也能达到效果,并且功能上更加强大。比如有嗅探锁定功能,多路分支通知功能,并且使用上比synchronized更加灵活。

2,基本使用:

使用lock()方法上锁,使用unlock()方法解锁
效果:
  • 加锁和解锁之间的代码块,多个线程运行变串行

代码示例:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @ClassName LockReentrantLockExample
 * @projectName: object1
 * @author: Zhangmingda
 * @description: XXX
 * date: 2021/4/24.
 */
public class LockReentrantLockExample {
    public static void main(String[] args) {
        Lock lock = new ReentrantLock();
        Runnable r = () -> {
            String tName = Thread.currentThread().getName();
            System.out.println("子线程运行");
            lock.lock();
            System.out.println(tName + "准备睡觉了");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(tName + "睡醒了");
            lock.unlock();
        };

        Thread thread = new Thread(r,"child1");
        Thread thread1 = new Thread(r,"child2");
        Thread thread2 = new Thread(r,"child3");
        thread.start();
        thread1.start();
        thread2.start();
    }
}

技术分享图片

 

 

java 多线程 Thread 锁ReentrantLock;Condition等待与通知

原文:https://www.cnblogs.com/zhangmingda/p/14698504.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!