Java多线程显式锁与隐式锁的不一样的详细解读

本文深入探讨Java多线程中的线程安全问题,详细解读显式锁(Lock)与隐式锁(synchronized)的差异。通过实例分析,阐述线程安全的概念,并介绍同步代码块、同步方法和Lock的使用,帮助读者理解如何解决并发编程中的线程安全问题。
摘要由CSDN通过智能技术生成

前言

那我在搜索多线程有关于锁的知识的时候发现,基本上所有的博客内容都是出自同一篇文章,啊,知识就是这样传播开来的。那我就觉得我既然也学习了这个知识点那就做点不一样的,当然我也很希望大家都能转载我这篇博客,留言说一声就行,点个赞再走也不错,能收藏那就是极好不过了,不转载学习讨论留言评论区大家一起探讨也是极好的。
好,开始我们的学习,那在开始本次的学习中我希望大家能够了解,什么是锁,锁的定义概念是什么,锁它要什么用,锁它会在哪里去使用呢?
其实我们生活中到处都有锁的身影,自行车锁,车锁,门锁,还有你们那难以打开的心锁。。。等等。对吧,那我们都知道锁的存在,那谁能说一下锁它为什么要存在呢?好,没人说,那我说啊,那不管是上面的哪个锁是不是都是在防止盗窃,防止我们的财产不被他人恶意侵占,防止不好的事情发生。那锁的存在就给了我们一定程度上的安全感没错吧。那这也是Java中锁的意义所在。那我们的显式锁与隐式锁的意义也就是在Java多线程的任务执行中保护我们线程能够好好的,不被阻断的进行下去。

那谈到了锁就必然会存在安全问题。我们也经常听到别人说线程安全不安全的,注意,面试官也经常问线程安全的奥。 那既然涉及到了这个知识点,那我们先来聊一聊什么是线程安全。

线程安全

什么是线程安全?

多个线程同一时刻对同一个全局变量(同一份资源)做写操作(读操作不会涉及线程安全)时,如果跟我们预期的结果一样,我们就称之为线程安全,反之,线程不安全。
不知道大家打过架没有?反正我肯定是没有打过架了,好好学生一枚的说!(我都是往死里打。),好继续说回来。那假设你们家你有个姐姐,没错,总是欺负你的那个女人,她每次都会在你们吃饭的时候和你抢饭吃,不是穷,没饭吃,而是总抢你的饭吃。你没有听错,她就是总抢你的饭吃。(那时候我还小,打不过她,到了10+了,更打不过了,女孩发育早的说。别给我说,什么姐姐最好了,那我小的时候最怕的就是她,很烦,打也打不过,你放弃,她还穷追不舍,拿话讽刺你。啊,那种感觉我现在回想起来还是有点气。)。好,回归到打架的阶段,那她总是要和你吃同一口,抢一个食,那是不是你们就筷子会打架,最后你被打。对吧,那这就是不安全。

源码案例解释

public class Demo7 {
   
    public static void main(String[] args) {
   
        //线程不安全
        Runnable run = new Ticket();
        new Thread(run).start();
        new Thread(run).start();
        new Thread(run).start();
    }

    static class Ticket implements Runnable{
   
        //票数
        private int count=10;
        @Override
        public void run() {
   
            while (count>0){
   
                //卖票
                System.out.println("正在准备卖票");
                try {
   
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
   
                    e.printStackTrace();
                }
                count--;
                System.out.println("出票成功,余票:"+count);
            }
        }
    }
}

没错,就是市面上的例子,我就不浪费心思了,反正知识点都是一样的。
好,我们来瞧一瞧在线程不安全下的运行结果。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少年,又是你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值