范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

每日一练进击大厂DAY7并发编程4

  文章目录一、有三个线程T1,T2,T3如何保证顺序执行二、AQS三、CountDownLatch四、CyclicBarrier五、Semaphore六、自旋锁七、偏向锁八、轻量级锁九、重量级锁十、Synchronized升级流程十一、可重入锁(ReentrantLock)十二、synchronized和Lock区别十三、乐观锁十四、悲观锁总结一、有三个线程T1,T2,T3如何保证顺序执行
  可以使用线程类中的join方法,在一个线程中启动另一个线程,另外一个线程执行完该线程继续执行。T3的run方法中执行t2.join(),T2的run方法中执行t1.join(),这样就会按照T1,T2,T3的顺序执行了。 二、AQS
  AQS是java.util.concurrent包下的工具类,全称是AbstractQueuedSynchronizer抽象队列同步器,AQS是多线程同步器,Lock、CountDownLatch、Semaphore都用到了AQS,从本质上来说AQS提供了两种锁机制,分别是排它锁和共享锁。
  排它锁:就是存在多线程竞争同一共享资源时,同一时刻只允许一个线程访问该共享资源,也就是多个线程中只能有一个线程获得锁资源,比如Lock中的ReentrantLock重入锁实现就是用到了AQS中的排它锁功能。
  共享锁:也称为读锁,就是在同一时刻允许多个线程同时获得锁资源,比如CountDownLatch、Semaphore都是用到了AQS中共享锁功能。 三、CountDownLatch
  CountDownLatch是基于执行时间的同步类,允许一个或多个线程等待其他线程完成操作,构造方法接收一个int参数作为计数器,如果要等待n个点就传入n,每次调用countDown方法时计数器减1,await方法阻塞当前线程直到计数器变为0,由于countDown方法可用在任何地方,所以n个点既可以是n个线程,也可以是一个线程里的n个执行步骤。 public class CountDownLatchDemo {     //主线程等待子线程执行完毕     public static void main(String[] args) throws InterruptedException {         CountDownLatch countDownLatch = new CountDownLatch(5);         for (int i = 0; i < 5; i++) {             new Thread(() -> {                 try {                     Thread.sleep(5000);                 } catch (Exception e) {                  }                  System.out.println(Thread.currentThread().getName() + "执行了此任务");                 countDownLatch.countDown();              }).start();         }         countDownLatch.await();         System.out.println("执行主线程代码");     }  } public class CountDownLatchDemo {     public static void main(String[] args) throws InterruptedException {         //子线程等主线程计数器变0一起执行         CountDownLatch countDownLatch = new CountDownLatch(1);         for (int i = 0; i < 5; i++) {             new Thread(() -> {                 try {                     countDownLatch.await();                 } catch (Exception e) {                  }   		 System.out.println(Thread.currentThread().getName() + "执行了此任务");             }).start();         }         Thread.sleep(5000);         System.out.println("执行主线程代码");         countDownLatch.countDown();     } } 四、CyclicBarrier
  循环屏障是基于同步到达某个点的信号量触发机制,作 是让 组线程到达 个屏障时被阻塞,直到最后 个线程到达屏障才会解除。构造 法中的参数表示拦截线程数量,每个线程调  await  法告诉CyclicBarrier  已到达屏障,然后被阻塞。还 持在构造 法中传 个 Runnable 任务,当线程到达屏障时会优先执 该任务。适 于多线程计算数据,最后合并计算结果的应 场景。CountDownLacth 的计数器只能 次,  CyclicBarrier 的计数器可使  reset  法重置,所以CyclicBarrier 能处理更为复杂的业务场景,例如计算错误时可 重置计数器重新计算。 五、Semaphore
  信号量 来控制同时访问特定资源的线程数量,通过协调各个线程以保证合理使 公共资源。信号量可以 于流量控制,特别是公共资源有限的应 场景, 如数据库连接。Semaphore 的构造 法参数接收 个 int 值,表示可 的许可数量即最 并发数。使  acquire  法获得 个许可证,使  release  法归还许可,还可以  tryAcquire 尝试获得许可。 六、自旋锁
  synchronized是重量级锁,拿到锁必须要阻塞,当量大的时候会一直阻塞唤醒,优化一下,不要让其阻塞,只是告诉有这么个标记,在synchronized的边界做循环,这就是自旋,如果做了多次循环发现还没有获得锁,再阻塞。 七、偏向锁
  有一个线程来访问代码块,没有锁的竞争,偏向某个线程,把偏向锁的偏向标记存储为线程的线程id(主要是同一个线程反复抢占锁的场景),只有一个线程,如果线程抢占那么就会升级成轻量级锁,偏向锁默认是关闭的。 八、轻量级锁
  有线程竞争,自旋去判断这个对象的锁是否释放,自旋次数(默认根据上一次自旋次数和锁的释放时间来决定),会升级重量级锁 九、重量级锁
  线程阻塞等待。 十、Synchronized升级流程
  首先synchronized会尝试使用偏向锁的方式去竞争锁资源,如果能够竞争到偏向锁,表示加锁成功直接返回。如果竞争锁失败,说明当前锁已经偏向了其他线程,需要将锁升级到轻量级锁,在轻量级锁状态下,竞争锁的线程根据自适应自旋次数去抢占锁资源。如果在轻量级锁状态下还是没有竞争到锁,就只能升级到重量级锁,在重量级锁状态下,没有竞争到锁的线程就会被阻塞,线程的状态就是Blocked。
  十一、可重入锁(ReentrantLock)
  在运行的某个函数或者代码,因为抢占资源或者中断等原因导致函数或者代码的运行中断,等待中断程序执行结束后,重新进入这个函数或者代码中运行,并且运行结果不会受到影响,那么这个函数或者代码就是可重入的。
  ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义。线程A在第一次抢占到锁,在还没有释放之前再次得到锁,这个时候就不需要重新抢占锁,而是增加重入次数,然后锁需要被释放两次才能获得真正的释放。
  ReentrantLock是一种可重入的排它锁,主要用来解决多线程对共享资源竞争的问题
  特性:
  1)支持可重入。
  2)支持公平和非公平。
  3)提供了阻塞竞争锁和非阻塞竞争锁的两种方法,分别是lock()和tryLock()。
  几个非常关键的技术:
  锁的竞争,ReentrantLock通过互斥变量,使用CAS机制来实现的,没有竞争到锁的线程,使用了AbstractQueuedSynchronized这样一个队列同步器来存储,底层是通过双向链表来实现的,当锁被释放之后,会从AQS队列里的头部唤醒下一个等待锁的线程。
  公平和非公平的特性,主要体现在竞争锁的时候,是否需要判断AQS队列存在等待中的线程。等待队列里的锁则是公平锁,如果都可以竞争锁,则是非公平锁。
  锁的重入特性,在AQS里面有一个成员变量来保存当前获得锁的线程,当同一个线程下次再来竞争锁的时候,就不会去走锁竞争的逻辑,而是直接增加重入次数。 十二、synchronized和Lock区别synchronized是关键字,是底层JVM层面实现,Lock是java的juc包下的接口实现。 synchronized异常会释放锁,lock必须手动释放锁。 synchronized不能响应中断,lock可以响应中断。 synchronized可重入,非公平,lock可重入、可公平可非公平。 synchronized通过两种方式来控制锁的粒度一种是修饰在方法层面,另一种是修饰在代码块上。Lock锁的粒度是通过它里面提供的lock()和unlock()方法决定的。 Lock比synchronized灵活性更高,Lock可以自主抉择什么时候加锁,什么时候释放锁,Lock还提供了非阻塞的竞争锁方法tryLock()方法,这个方法通过返回true/fasle来告诉当前线程是否已经有其他线程正在使用锁。 synchronized引入了偏向锁、轻量级锁、重量级锁以及锁升级的方式来优化加锁的性能;Lock则用到了自旋锁的方式来实现性能优化。 十三、乐观锁
  对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将比较替换这两个动作作为一个原子操作尝试去修改内存中的变量,如果失败则表示发生冲突,那么就应该有相应的重试逻辑。 十四、悲观锁
  对于并发间操作产生的线程安全问题持悲观状态,悲观锁认为竞争总是会发生,因此每次对某资源进行操作时,都会持有一个独占的锁,就像synchronized,直接上锁操作资源。 总结
  择一良人,选一城市,三餐四季,春夏秋冬

正式服12。14更新7英雄调整,公孙离前期削弱,鲁班飞艇带减速在王者荣耀正式服12月14日早晨将进行一波不停机更新,在此期间孙膑钟馗公孙离杨玉环鲁班七号程咬金金蝉七名英雄将作出调整。孙膑前期机动性提升初始血量32083280二技能增加移速30Win11和Win10哪个更好用?3个月的使用经验告诉你日常,小编的电脑主要用来做PPT数据分析平面设计视频剪辑招投标文档制作等工作。拥有二十余年的Windows使用经验,在升级到Win11之前,主要使用Win10系统,是从Win7系统小米黑科技!小米研发可拆卸摄像头,实现全面屏近日,小米向世界知识产权组织提交了一项新专利。根据专利报告来看,这项专利拥有多种后置摄像头模组设计,其中包含了磁铁接收器无线传输等原件,并且还采用了可拆卸设计。这些可以拆卸的摄像头Steam周销榜光环无限战役登顶翼星求生降至第四Steam公开了上一周(截止至12月12日)的销量排行榜,光环无限(战役)登顶上周销量榜,销量榜第二名和第三名都是命运2的新DLC内容,上周榜首的翼星求生本周降至第四,上周排名第四LOL速成流男刀韩服爆火,力压盲僧晋升T1,25分钟凑齐6大件前言伴随着LOL版本的不停更新,众多新内容也是不断浮现,在如今11。23和11。24季前赛版本中,一些适应新版本的英雄也是在对局中大放光彩。比如曾经非常热门的打野男刀,这一次就重回红白机松鼠大战究竟讲了一个什么故事,这游戏竟然还有剧情?重装游戏原创第142期FC版松鼠大战算是一款老少皆宜的游戏了,记得老雷小时候去表哥家里玩,每次都要耍上几把双人版松鼠大战。其实松鼠大战这款游戏的真实难度并不算低,尤其是最后一关挑战剑网三锦绣霓裳造玩家吐槽,与仙女风对比鲜明,多元化尽显剑网三别的不勤快,外观发型出的速度可以说是业界勤劳小标兵了。尽管前阵子咸鱼说了要外观减负,但是就目前来看,这个速度之下,也很难真的做到减负啊!剑网三的外观一般来说都是那种比较仙的感小鲁班双喜临门,马可将出首款传说皮肤,关羽新战令皮肤超帅来袭大家好,这里是东南王者资讯频道,更新王者最新资讯,助你登上百星王者。一说到王者里面哪个英雄热度最高,那肯定是小鲁班莫属了,虽然他不经常在峡谷中出现,但是峡谷一直有小鲁班跟兰陵王的传上周值得推荐的5款Steam新游,去奇巫妙森体验不一样的童话从目前释出的消息来看,今年双十二各大电商促销力度都非常小,消费者也并不积极,疫情等原因对于大家收入还是有很大影响,而上星期TGA的各大奖项也颁出,今年也没有什么大作让人惊喜,今天还光遇陈星汉有多谨慎?担心影响玩家体验,把毕业礼给弄废了光遇陈星汉有多谨慎?担心影响玩家体验,把毕业礼给弄废了前言大家好,我是阿瑶,每天为你发布游戏领域最新情报。在光遇的游戏里,出现过多起运营事故,有些来自国际服,有些来自国服。可能是害LPL赛区年度颁奖盛典,EDG成为最大赢家,小虎成为年度最佳上单随着LPL赛区全明星赛的落幕,今年的各种奖项也是名花有主,而在今年的颁奖过程中,EDG战队成为了最大赢家,在成为S11世界冠军之后,EDG战队的每个选手甚至是教练都成了热门人选,那
小米OPPO官宣新机都搭载扮猪吃老虎的新神U,打造最强千元机!小米已经宣布,首发骁龙7Gen2芯片的RedmiNote12Turbo,将于本月正式发布。上代机型RedmiNote11TPro系列搭载跑分80万的天玑8100芯片,RedmiNo公认口碑不错的四款手机,最低仅1768,国产优质手机太香了手机市场内卷之后,越来越多的好手机开始出现,并且价格都还不高。今天要和大家聊的这四款手机都是公认口碑不错的国产手机。红米K50ProK50Pro搭载了三星2K120Hz柔性直屏,下聊聊OPPOFindX6标准版是否值得入手为什么这么说呢?通过最近OPPO的样张传播,就能看出猫腻了。先是丢出来样张大吹特吹暗光长焦厉害,然后官宣都是标准版拍摄,从而得出FindX6标准版没有阉割的逻辑,看似挺符合逻辑,但三天吃透MySQL面试八股文事务的四大特性?事务特性ACID原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)。原子性是指事务包含的所有操作大环分子组装研究获进展HOFs(Hydrogenbondedorganicframeworks)是一类由分子间氢键组装形成的有序多孔材料。设计结构新颖的分子砌块单元可以构筑新型拓扑结构的氢键网络,是开发华为长焦之王!超20万人预约P60系列影像教科书来了3月20日消息,华为商城华为天猫官方旗舰店显示,华为P60系列两大平台累计预约人数突破了20万人,人气火爆。作为年度旗舰,华为P60系列最大的看点是影像。余承东透露,华为P60系列ChatGPT带动游戏板块拉升,游戏行业的春天到来了吗?游戏板块今天开盘大涨,并且手机游戏网络游戏云游戏等细分板块领涨全天,今天的游戏板块大涨背后原因在于1。ChatGPT最新的gpt4的发布,可以有效降低游戏的美术,设计成本并且改变游何院士认为华为不懂理论研究的重要性华为有没有懂得研究理论的重要意义不好确定,但华为在研发投入上是国内,包括各类科研院所,以及各类性质单位里最多的,华为每年研发投入费用大概长年可以可以排全球前十,华为也事实上取得了很AI对话隐私保护问题,让我们都裸奔了吗?当前,随着人工智能技术的发展,越来越多的AI对话系统进入了人们的生活。在使用这些系统的同时,我们也应该重视其安全性和隐私保护问题,以保障自己的利益。不过能不能做到是一回事,但是起码中国数字阅读行业运营态势及发展趋势研究报告数字化阅读是指阅读的数字化,主要有两层含义一是阅读对象的数字化,即阅读内容的数字化呈现。二是阅读方式的数字化,即阅读的载体和终端不是平面纸,而是有屏幕显示的电子仪器。与传统纸质出版性能续航小超人登场!iQOOZ7系列正式发布1299元起手机中国新闻3月20日1900,iQOO举行新品发布会,带来了性能续航小超人iQOOZ7系列,推出了iQOOZ7iQOOZ7x两款机型。iQOOZ7外观方面,iQOOZ7采用了万象