并发世界很有趣,不要错过
前言:
时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。
写这一套 Java 面试必备系列文章的初衷。
- 整理自己学过的知识,总结,让其成为一套体系,方便日后查阅。
- 现在不少 Java 开发者还比较迷茫,没有形成自己的一套知识体系。希望这一系列的文章能够帮助他们。
Java有进阶,其名为并发,并发知识之大,一口吃不下。那好,请您多吃几口,又没说一顿吃完,细嚼慢咽才有味.所有 Java 书籍都将并发编程放在其高级/进阶篇章中,其重要性不言而喻,学好并发也是自身走入高级行列的必备素质之一
并发/并行,进程/线程这些概念总是显得过于抽象,因为这是与操作系统沟通用到的词汇,就像我们习惯了使用十进制算法,二进制和16进制就需要思维的切换;生活中,我们彼此总是不能互相理解,平静之后,我们知道要换位思考;程序的世界也一样,为了更好的理解问题,你也要站在操作系统的角度来思考问题,但当你尝试理解对方时,是违背自己认知习惯的,所以有些困难在所难免
生活中你一定说过「杀鸡焉用牛刀?」这句话,并发编程中的各种锁(内置锁/显示锁/偏向锁/轻量锁/重量锁/乐观锁/悲观锁),看到眼花缭乱,有时候很小的问题却用了很重的锁,这是没有必要的;但是这些锁,没有最好的那个,只有最合适和更高效的那个
JUC(java.util.concurrent)包随着JDK的版本升级内容也变得越来越多,面对琳琅满目的并发类,又有些无从下手,其实他们都有一定的联系,我们需要找到升级的主线,让其变得有迹可循.
谈及并发编程,我还是带有一丝惶恐:
- 如何将这些抽象的概念变得具象?
- 如何将编程问题联系到生活实际?
- 如何在抽象和具象之间切换思维?
内容展示:
学并发编程,透彻理解三个核心是关键
并发 Bug之源有三,找对根源是关键
可见性
原子性
有序性