腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
爱明依
专栏作者
举报
190
文章
249177
阅读量
25
订阅数
订阅专栏
申请加入专栏
全部文章(190)
java(66)
编程算法(44)
数据库(20)
sql(14)
hashmap(13)
云数据库 Redis(11)
容器(10)
http(9)
jdk(9)
javascript(8)
servlet(8)
spring(8)
缓存(8)
网站(7)
分布式(7)
面向对象编程(7)
网络安全(6)
jvm(6)
react(5)
打包(5)
https(5)
kafka(5)
c++(4)
bash(4)
node.js(4)
tomcat(4)
maven(4)
bash 指令(4)
存储(4)
数据分析(4)
数据结构(4)
微服务(4)
程序员(4)
公众号(4)
xml(3)
oracle(3)
git(3)
api(3)
文件存储(3)
zookeeper(3)
php(2)
云数据库 SQL Server(2)
ide(2)
github(2)
jar(2)
搜索引擎(2)
linux(2)
apache(2)
容器镜像服务(2)
开源(2)
mybatis(2)
单元测试(2)
rabbitmq(2)
app(2)
class(2)
time(2)
解决方案(2)
接口(2)
官方文档(1)
python(1)
lua(1)
erlang(1)
jsp(1)
regex(1)
css(1)
html(1)
json(1)
ajax(1)
android(1)
mvc(1)
eclipse(1)
svn(1)
ubuntu(1)
apt-get(1)
腾讯云测试服务(1)
云推荐引擎(1)
mongodb(1)
企业(1)
redux(1)
yarn(1)
运维(1)
压力测试(1)
ssh(1)
正则表达式(1)
sql server(1)
dns(1)
opencv(1)
线性回归(1)
grep(1)
tcp/ip(1)
spring cloud(1)
socket编程(1)
uml(1)
安全(1)
数据处理(1)
windows(1)
hbase(1)
黑盒测试(1)
es(1)
Elasticsearch Service(1)
char(1)
cmd(1)
code(1)
connect(1)
counter(1)
date(1)
final(1)
image(1)
io(1)
iso(1)
layout(1)
model(1)
nio(1)
png(1)
port(1)
properties(1)
provider(1)
rpm(1)
selector(1)
sidebar(1)
string(1)
system(1)
web(1)
报表(1)
遍历(1)
变量(1)
表单(1)
插件(1)
反射(1)
服务(1)
工作(1)
进程(1)
乱码(1)
面试(1)
软件(1)
软件工程(1)
软件开发(1)
数组(1)
算法(1)
网关(1)
需求分析(1)
语法(1)
源码(1)
搜索文章
搜索
搜索
关闭
Java并发机制(-synchronized的实现原理与应用)
java
线性回归
1 synchronized的实现原理与应用 1.1 偏向锁和轻量级锁以及锁的存储结构和升级过程 1.1.1 实现同步的基础,Java中每一个对象都可以作为锁 a:对于普通同步方法,锁是当前实例对象。 b:对于静态同步 方法,锁是当前类的Class对象。 c:对于同步方法块,锁是synhronized 括号里配置的对象。 1..2 Java对象头: 1..2.1 synchronized 用的锁是存在Java对象头李的。 1.3 锁的升级与对比 为了减少获得锁和释放锁带来的性能消耗,引入了偏向所和轻量级锁。在JavaSE 1.6 中,级别从低到高依次是:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态。这几个状态会随着竞争情况逐渐升级。锁可以升级丹不能降级。目的是为了提高获得锁和释放锁的效率。 2.1 偏向锁。使用机制:等到竞争出现才释放锁的机制。偏向所在java6和Java7里是默认启用的,如果你确定应用程序里所有的锁通常情况下处于竞争状态,可以通过JVM参数关闭偏向锁,-XX:-UseBiasedLocking=false,那么默认会进入轻量级锁状态。 2.2 轻量级锁 2.2.1 轻量级锁加锁:当前线程便尝试使用自旋来获取锁。 2.2.2 轻量级锁解锁:若果锁存在竞争,锁就会膨胀成重量级锁。因为自旋会消耗cpu,为了避免无用的自旋,比如获得锁的线程被阻塞住了,一旦锁升级为重量级锁,就不会回复到轻量级锁i,当锁处于这个状态下,卡线程视图获得锁时,都会被阻塞住。锁的优缺点对比: 偏向锁:加锁和解锁不需要额外的消耗,和执行非同步方法相比仅存在纳秒级的差距。-优点 如果线程间存在锁竞争,会带来额外的锁撤销的消耗-缺点 适用于只有一个线程访问同步快场景。-使用场 轻量级锁:竞争的线程不会阻塞,提高了程序的响应速度。 如果始终得不到锁竞争的线程,使用自旋会消耗cpu 追求响应时间 同步块执行速度非常快 重量级锁:线程竞争不适用自旋,不会消耗cpu 线程阻塞,响应时间缓慢。 追求吞吐量 同步块执行速度较长
爱明依
2019-03-12
802
0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档