3、JUC:传统的synchronized

学习过程观看视频:[狂神说Java]
https://www.bilibili.com/video/BV1B7411L7tE?p=2
欢迎大家支持噢,很良心的老师了!

1、java代码,不加synchronized,有线程安全问题

package com.zjl;

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

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

}

class Ticket{
    //属性  票数
    private int ticketNums = 50;

    //方法  卖票
    public void sale(){
        if(ticketNums > 0){
            System.out.println(Thread.currentThread().getName() + "卖出了第" + ticketNums-- +"张票--------剩余" + ticketNums + "张票");
        }
    }
}

2、运行结果

在这里插入图片描述

3、加了synchronized,解决了线程安全问题

/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=56845:/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.SaleTicketDemo
A线程卖出了第50张票--------剩余49张票
A线程卖出了第49张票--------剩余48张票
A线程卖出了第48张票--------剩余47张票
A线程卖出了第47张票--------剩余46张票
A线程卖出了第46张票--------剩余45张票
A线程卖出了第45张票--------剩余44张票
A线程卖出了第44张票--------剩余43张票
A线程卖出了第43张票--------剩余42张票
A线程卖出了第42张票--------剩余41张票
A线程卖出了第41张票--------剩余40张票
A线程卖出了第40张票--------剩余39张票
A线程卖出了第39张票--------剩余38张票
A线程卖出了第38张票--------剩余37张票
A线程卖出了第37张票--------剩余36张票
A线程卖出了第36张票--------剩余35张票
A线程卖出了第35张票--------剩余34张票
A线程卖出了第34张票--------剩余33张票
A线程卖出了第33张票--------剩余32张票
A线程卖出了第32张票--------剩余31张票
A线程卖出了第31张票--------剩余30张票
A线程卖出了第30张票--------剩余29张票
A线程卖出了第29张票--------剩余28张票
A线程卖出了第28张票--------剩余27张票
A线程卖出了第27张票--------剩余26张票
A线程卖出了第26张票--------剩余25张票
A线程卖出了第25张票--------剩余24张票
A线程卖出了第24张票--------剩余23张票
A线程卖出了第23张票--------剩余22张票
A线程卖出了第22张票--------剩余21张票
A线程卖出了第21张票--------剩余20张票
A线程卖出了第20张票--------剩余19张票
A线程卖出了第19张票--------剩余18张票
A线程卖出了第18张票--------剩余17张票
A线程卖出了第17张票--------剩余16张票
A线程卖出了第16张票--------剩余15张票
A线程卖出了第15张票--------剩余14张票
A线程卖出了第14张票--------剩余13张票
A线程卖出了第13张票--------剩余12张票
A线程卖出了第12张票--------剩余11张票
A线程卖出了第11张票--------剩余10张票
A线程卖出了第10张票--------剩余9张票
A线程卖出了第9张票--------剩余8张票
A线程卖出了第8张票--------剩余7张票
A线程卖出了第7张票--------剩余6张票
A线程卖出了第6张票--------剩余5张票
A线程卖出了第5张票--------剩余4张票
A线程卖出了第4张票--------剩余3张票
A线程卖出了第3张票--------剩余2张票
A线程卖出了第2张票--------剩余1张票
A线程卖出了第1张票--------剩余0张票

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值