![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
菜鸟读并发
大师兄啊
做你自己想做的事~
展开
-
《菜鸟读并发》一文读懂Synchronize锁优化过程
概念随着JVM的升级,几乎不需要修改代码,就可以直接享受JVM在内置锁上的优化成果。从简单的重量级锁,到逐渐膨胀的锁分配策略,使用了多种优化手段解决隐藏在内置锁下的基本问题。我们来回顾一下,新版的锁的类型一共有四种状态:无锁、偏向锁、轻量级锁、重量级锁,它会随着竞争情况逐渐升级.锁可以升级但是不可以降级,目的是为了提供获取锁和释放锁的效率。锁的四个状态JDK 1.6 引入了偏向锁和轻量...原创 2020-02-28 22:37:36 · 34280 阅读 · 0 评论 -
《菜鸟读并发》java内存模型之final
final 关键字的字面意思是最终的,不可修改的。这似乎是一个看见名字就大概知道怎么用的语法,但你是否有深究过final在各个场景中的具体用法,注意事项,以及背后涉及的Java设计思想呢?final可以修饰什么类成员变量方法被final修饰的类并不可以被继承,所以到这里我们就能知道String类是不能被继承的。而且被final 修饰的类所有成员方法都将被隐式修饰为final方法...原创 2020-02-28 22:37:40 · 34415 阅读 · 0 评论 -
《菜鸟读并发》多线程程序问题如何调试?
多线程程序问题如何调试?出了 Bug 基本上都是靠日志,靠线程dump来跟踪问题分析线程dump的一个基本功就是分析线程状态,大部分的死锁、饥饿、活锁问题都需要跟踪分析线程的状态。你可以通过jstack命令或者VisualVM这个可视化工具将JVM所有的线程栈信息导出来,完整的线程栈信息不仅包括线程的当前状态、调用栈,还包括了锁的信息例如一个死锁的程序,导出的线程栈明确告诉我发生了死锁,...原创 2020-02-28 22:37:15 · 34395 阅读 · 0 评论 -
《菜鸟读并发》java内存模型之happen-before
面试题:happen-before的八个基本规则你知道吗?Happens-BeforeHappens-Before真正要表达的是:前面一个操作的结果对后续操作是可见的。就像有心灵感应的两个人,虽然远隔千里,一个人心之所想,另一个人都看得到。Happens-Before 规则就是要保证线程之间的这种“心灵感应”。Happens-Before原则它是判断数据是否存在竞争、线程是否安全的主...原创 2020-02-28 22:37:27 · 34142 阅读 · 0 评论 -
《菜鸟读并发》java内存模型之volatile关键字初识
在阅读本文前,请思考以下的面试题?volatile是什么?volatile的特性volatile是如何保证可见性的?volatile是如何保证有序性的?volatile可以保证原子性吗?使用volatile变量的条件是什么?volatile和synchronized的区别volatile和atomic原子类的区别是什么?这一章主要是讲解volatile的原理,在开始本文前...原创 2020-02-28 22:37:24 · 34239 阅读 · 0 评论 -
《菜鸟读并发》vmstat可以测量线程上下文切换的次数
什么是vmstat概念:vmstat测量上下文切换的次数,vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的C...原创 2020-02-28 22:37:17 · 35610 阅读 · 0 评论 -
《菜鸟读并发》并发编程三个核心问题和三个主要BUG源头你知多少?
并发编程的第一原则,那就是不要写并发程序,所以编写正确的并发程序是一件极困难的事情,但要快速而又精准地解决“并发”类的疑难杂症,就要理解这件事情的本质,追本溯源,深入分析这些Bug的源头在哪里。并发编程三个核心问题和三个主要BUG源头,思维导图如下:前戏我们知道我们的的CPU、内存、I/O设备都在不断快速的迭代,不断朝着更快的方向努力。但是,在这个快速发展的过程中,有一个核心矛盾一直存...原创 2020-02-28 22:37:21 · 34099 阅读 · 0 评论 -
《菜鸟读并发》深入浅出Synchronized关键字
synchronized关键字JDK 1.5之前的synchronized关键字,锁被称之为重量级锁synchronized是Java内置的机制,是JVM层面的,而Lock则是接口,是JDK层面的。其底层依赖监视器监视器又依赖操作系统底层的互斥锁1.6之后为了减少获得锁和释放锁带来的性能开销而引入偏向锁和轻量级锁,优化之后原来越强大了,这也是官方建议使用synchronized的原因...原创 2020-02-28 22:37:33 · 34105 阅读 · 0 评论 -
《菜鸟读并发》什么是线程死锁,怎么解决线程死锁
面试题什么是线程死锁,?产生死锁的四个必要条件?解决线程死锁的办法是什么?如何避免死锁?什么是线程死锁?首先是一个线程需要多把锁,并发的时候多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状...原创 2020-02-28 22:37:09 · 34109 阅读 · 0 评论