JAVA高级之路----JAVA多线程】的更多相关文章

介绍 这段时间一直在学习和整理一些通往java高级程序猿必备的知识点,有些是工作中必须要知道的,有些是面试必须要知道的, 但是不管怎么样,学习了就不会有坏处,不可能全部记得住,最起码得雁过留痕,知识不是非得分出来什么是高级什么是初级,只要你不会的对你来说都是高级, 今天主要是分享一下自己收集的有关java多线程方面的知识,细节比较多分开了好几个笔记整理的,这里只是大纲. 限于个人认知,里面不免有些不妥的地方,还请谅解! 大纲 多线程有关的概念 线程的状态 线程的实现 线程的同步 线程的调度 线程…
@ 目录 java基础怎么学? 学完基础学什么? 几个常用框架学完学什么? MQ JVM的知识跑不掉 微服务等等 其他 数据结构和算法 java基础怎么学? 当时,作为懵懂的小白,大一学习了c和c++,还有数据结构,后来才自学的java.有了c++的基础,其实学java确实感觉挺容易上手.如果没有c或者c++的基础,建议开始需要先把java的基础打好,基础是指什么?基础的语法,能用!至于源码,不建议在刚刚开始学就看源码,绝对劝退!!! 推荐几本可以入门的书籍: Head First Java 简…
Java并发性和多线程: (中文,属于人工翻译,高质量):http://ifeve.com/java-concurrency-thread-directory/ (英文):http://tutorials.jenkov.com/java-concurrency/index.html 总结: 1.我的实践笔记:http://www.cnblogs.com/EasonJim/tag/java%E5%B9%B6%E5%8F%91%E6%80%A7%E5%92%8C%E5%A4%9A%E7%BA%BF%…
貌似两个多月没写博客,不知道年前这段时间都去忙了什么. 好久以前写过一次和volatile相关的博客,感觉没写的那么深入吧,这次我们继续说我们的volatile关键字. 复习: 先来简单的复习一遍以前写过的东西,上次我们说了内存一致性协议M(修改)E(独占)S(共享)I(失效)四种状态,还有我们并发编程的三大特性原子性.一致性和可见性.再就是简单的提到了我们的volatile关键字,他可以保证我们的可见性,也就是说被volatile关键字修饰的变量如果产生了变化,可以马上刷到主存当中去.我们接下…
上期回顾: 上次博客我们说了我们的volatile关键字,我们知道volatile可以保证我们变量被修改马上刷回主存,并且可以有效的防止指令重排序,思想就是加了我们的内存屏障,再后面的多线程博客里还有说到很多的屏障问题. volatile虽然好用,但是别用的太多,咱们就这样想啊,一个被volatile修饰的变量持续性的在修改,每次修改都要及时的刷回主内存,我们讲JMM时,我们的CPU和主内存之间是通过总线来连接的,也就是说,每次我们的volatile变量改变了以后都需要经过总线,“道路就那么宽,…
说完了我们的synchronized,这次我们来说说我们的显示锁ReetrantLock. 上期回顾: 上次博客我们主要说了锁的分类,synchronized的使用,和synchronized隐式锁的膨胀升级过程,从无锁是如何一步步升级到我们的重量级锁的,还有我们的逃逸分析. 锁的粗化和锁的消除 这个本来应该是在synchronized里面去说的,忘记了,不是很重要,但是需要知道有这么一个东西啦. 我们先来演示一下锁的粗化: StringBuffer sb = new StringBuffer(…
说到JMM大家一定很陌生,被我们所熟知的一定是jvm虚拟机,而我们今天讲的JMM和JVM虚拟机没有半毛钱关系,千万不要把JMM的任何事情联想到JVM,把JMM当做一个完全新的事物去理解和认识. 我们先看一下计算机的理论模型,也是冯诺依曼计算机模型,先来张图. 其实我们更关注与计算机的内部CPU的计算和内存之间的关系.我们在来深入的看一下是如何计算的. 我们来看一下这个玩意的处理流程啊,当我们的数据和方法加载的内存区,需要处理时,内存将数据和方法传递到CPU的L3->L2->L1然后再进入到CP…
上几次博客,我们把volatile基本都说完了,剩下的还有我们的synchronized,还有我们的AQS,这次博客我来说一下synchronized的使用和原理. synchronized是jvm内部的一把隐式锁,一切的加锁和解锁过程是由jvm虚拟机来控制的,不需要我们认为的干预,我们大致从了解锁,到synchronized的使用,到锁的膨胀升级过程三个角度来说一下synchronized. 锁的分类 java中我们听到很多的锁,什么显示锁,隐式锁,公平锁,重入锁等等,下面我来总结一张图来供大…
这次不讲原理了,主要是一些应用方面的知识,和上几次的JUC并发编程的知识点更容易理解. 知识回顾: 上次主要说了Semaphore信号量的使用,就是一个票据的使用,我们举例了看3D电影拿3D眼镜的例子,还说了内部的抢3D眼镜,和后续排队的源码解析,还有CountDownLatch的使用,我们是用王者农药来举例的,CyclicBarrier栅栏的使用和CountDownLatch几乎是一致的,Executors用的很少我只是简单的写了一个小示例.上次遗漏了一个CountDownLatch和Cycl…
上期回顾: 上次博客我们主要说了我们juc并发包下面的ReetrantLock的一些简单使用和底层的原理,是如何实现公平锁.非公平锁的.内部的双向链表到底是什么意思,prev和next到底是什么,为什么要引入heap和tail来值向null的Node节点.高并发时候是如何保证state来记录重入锁的,在我们的上次博客都做了详细的说明.这次我们来聊一些简单易懂且实用的AQS中的工具类. Semaphore信号量: 这个东西很简单,别看字面意思,什么信号量,我也不懂得那个术语什么意思,Semapho…