4. JUC: Bloqueo

Mire el video del proceso de aprendizaje: [Dios loco dice Java]
https://www.bilibili.com/video/BV1B7411L7tE?p=2
Bienvenidos a todos para apoyar ¡Oh, muy concienzudo maestro!

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

ejemplo de código java:

package com.zjl;

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

/**
 * Created by zjl
 * 2020/11/19
 **/
/*
* 真正的多线程开发,公司中的开发
* 线程就是一个单独的资源类,没有任何附属的操作!
* 1、属性   2、方法
* */
public class SaleTicketDemo2 {
    
    
    public static void main(String[] args) {
    
    
        Ticket2 ticket2 = new Ticket2();

        // @FunctionalInterface  函数式接口,jdk 1.8  lambda表达式 (参数)->{代码}
        new Thread(()->{
    
    
            for (int i = 0; i < 60; i++) {
    
    
                ticket2.sale();
            }
        },"A线程").start();
        new Thread(()->{
    
    
            for (int i = 0; i < 60; i++) {
    
    
                ticket2.sale();
            }
        },"B线程").start();
        new Thread(()->{
    
    
            for (int i = 0; i < 60; i++) {
    
    
                ticket2.sale();
            }
        },"C线程").start();
    }

}
//Lock三部曲
//1、new ReentrantLock();
//2、lock.lock();   //加锁
//3、lock.unlock();    //解锁
class Ticket2{
    
    
    //属性  票数
    private int ticketNums = 50;

    Lock lock = new ReentrantLock();

    //方法  卖票
    public void sale(){
    
    
        lock.lock();   //加锁
        try {
    
    
            if(ticketNums > 0){
    
    
                System.out.println(Thread.currentThread().getName() + "卖出了第" + ticketNums-- +"张票--------剩余" + ticketNums + "张票");
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            lock.unlock();    //解锁
        }
    }
}

resultado de la operación:

/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java "-javaagent:/Users/zhangjianlong/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/193.5662.53/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=57772:/Users/zhangjianlong/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/193.5662.53/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/tools.jar:/Users/zhangjianlong/testCode/JUC-study/target/classes:/Users/zhangjianlong/apache-maven-3.6.3/repository/org/projectlombok/lombok/1.18.8/lombok-1.18.8.jar com.zjl.SaleTicketDemo2
A线程卖出了第50张票--------剩余49张票
A线程卖出了第49张票--------剩余48张票
A线程卖出了第48张票--------剩余47张票
C线程卖出了第47张票--------剩余46张票
C线程卖出了第46张票--------剩余45张票
C线程卖出了第45张票--------剩余44张票
C线程卖出了第44张票--------剩余43张票
C线程卖出了第43张票--------剩余42张票
C线程卖出了第42张票--------剩余41张票
C线程卖出了第41张票--------剩余40张票
C线程卖出了第40张票--------剩余39张票
C线程卖出了第39张票--------剩余38张票
C线程卖出了第38张票--------剩余37张票
C线程卖出了第37张票--------剩余36张票
C线程卖出了第36张票--------剩余35张票
C线程卖出了第35张票--------剩余34张票
C线程卖出了第34张票--------剩余33张票
C线程卖出了第33张票--------剩余32张票
C线程卖出了第32张票--------剩余31张票
C线程卖出了第31张票--------剩余30张票
C线程卖出了第30张票--------剩余29张票
B线程卖出了第29张票--------剩余28张票
B线程卖出了第28张票--------剩余27张票
B线程卖出了第27张票--------剩余26张票
B线程卖出了第26张票--------剩余25张票
B线程卖出了第25张票--------剩余24张票
B线程卖出了第24张票--------剩余23张票
B线程卖出了第23张票--------剩余22张票
B线程卖出了第22张票--------剩余21张票
B线程卖出了第21张票--------剩余20张票
B线程卖出了第20张票--------剩余19张票
B线程卖出了第19张票--------剩余18张票
B线程卖出了第18张票--------剩余17张票
B线程卖出了第17张票--------剩余16张票
B线程卖出了第16张票--------剩余15张票
B线程卖出了第15张票--------剩余14张票
B线程卖出了第14张票--------剩余13张票
B线程卖出了第13张票--------剩余12张票
B线程卖出了第12张票--------剩余11张票
B线程卖出了第11张票--------剩余10张票
B线程卖出了第10张票--------剩余9张票
B线程卖出了第9张票--------剩余8张票
B线程卖出了第8张票--------剩余7张票
B线程卖出了第7张票--------剩余6张票
B线程卖出了第6张票--------剩余5张票
B线程卖出了第5张票--------剩余4张票
B线程卖出了第4张票--------剩余3张票
B线程卖出了第3张票--------剩余2张票
B线程卖出了第2张票--------剩余1张票
B线程卖出了第1张票--------剩余0张票

Process finished with exit code 0

Supongo que te gusta

Origin blog.csdn.net/qq_41347385/article/details/109845688
Recomendado
Clasificación