Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1876386
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: Java

2021-01-05 10:49:22

之前在看java相关的东西的时候(包括上学的时候学习相关课程),突然发现这东西很好玩,决定研究下。java当中关于锁一般情况有两种吧,synchronized和显式的lock,如果不做特殊说明呢,都是非公平的。

关于线程之间的调度:当一个线程拥有一个锁的时候,其余的线程想要获取锁,就必须在该锁上等待,等待当前拥有这个锁的线程释放锁,然而,当拥有这个锁的线程释放之后,它会通知在该锁上等待的线程进行调度,不是说这个退出,另一个立马接上,在第一个持有锁的线程退出,到下一个线程获得锁的过程中,会有一个时间窗口window,而且接到锁可用通知的线程也不是直接执行,它也会先判断是否可以获得所,可以获得才会执行自己线程当中的代码。

公平锁:当有一个线程请求某个锁的时候,排队等待,做个乖孩子,走“人们认为他应该做的”那条路
非公平锁:当有一个线程请求某个锁的时候,如果当前处于上面的窗口期,直接获得所,不用排队,否则,排队。

这样的话尝试获取非公平锁的每个线程都会有机会“抢”在“乖线程”之前获得锁,也就导致非公平锁性能上会比公平锁要高。
阅读(2026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~