摘要: 本篇是《自己动手写把"锁"》系列技术铺垫的最后一个知识点。本篇主要讲解LockSupport工具类,它用来实现线程的挂起和唤醒。 LockSupport是Java6引入的一个工具类,它简单灵活,应用广泛。 一、简单 俗话说,没有比较就没有伤害。这里咱们还是通过对比来介绍LockSupport的简单。 阅读全文
posted @ 2018-01-07 16:54 清泉^_^ 阅读(14250) 评论(4) 推荐(9) 编辑
摘要: 所谓的原子性,就是在执行过程中不会被线程调度机制打断的操作,这种操作从开始就一直运行到结束,中间不存在任何上下文切换。 还是以上篇讲到的x++操作为例。这是一个典型的‘读改写’的操作,在多线程的情况下,必须需要硬件的支持来保证‘读改写’的原子性,底层原理可以简单理解,通过锁总线的方式来实现。不过这里 阅读全文
posted @ 2018-01-06 20:54 清泉^_^ 阅读(2379) 评论(0) 推荐(5) 编辑
摘要: 一、JAVA内存模型 关于Java内存模型的文章,网上真的数不胜数。在这里我就不打算说的很详细、很严谨了。只力求大家能更好的理解和运用,为后边的技术点做铺垫。 内存模型并不是Java独有的概念,而是我们的计算机硬件平台的一个概念。内存模型描述了程序中变量如何在从内存读出、以及何时写会内存的底层细节。 阅读全文
posted @ 2018-01-02 20:35 清泉^_^ 阅读(1211) 评论(0) 推荐(5) 编辑
摘要: 前序 这是一个系列文章,前边几篇比较基础,主要为了后续做准备。熟悉的朋友可以直接跳过看后续的文章。 本主题很重要,学完这个系列,你将会对Java并包有一个透彻的原理性的认识。线程池技术、阻塞队列、信号量、原子性操作等等所用的基础技术都会在这系列的文章中讲到。学完之后,大家可以自己实现一个CountD 阅读全文
posted @ 2017-12-31 18:51 清泉^_^ 阅读(1207) 评论(1) 推荐(1) 编辑
摘要: 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。 在Java用有一个Executors工具类,可以为我们创建一个线程池,其本 阅读全文
posted @ 2017-12-29 23:21 清泉^_^ 阅读(34754) 评论(10) 推荐(9) 编辑
摘要: 在知乎上看到一篇提问,于是做了个实验帮助他解答,这里整理成一篇文章分享一下。 先看代码如下代码: 运行时加上注释里的JVM参数,控制台打印如下 问题是:分配一个3m的数组,新生代只有2m,所以对象直接分配到年老代。通过打印结果也可以看出来,年老代用了3072k,正好是我们的3m数组。但是为什么新生代 阅读全文
posted @ 2017-12-16 10:44 清泉^_^ 阅读(522) 评论(2) 推荐(1) 编辑
摘要: 近几年,IT培训机构可谓是琳琅满目,稂莠不齐。培训Java的,培训PHP的,培训大数据的等等吧,不一而足。 自己也算是IT技术圈子待了好多年了,面试过一些机构培训出来的学生,也有几个好哥们在培训机构做讲师,所以对培训机构有一定了解。 这里呢,就不讨论选择哪个培训机构,也不讨论培训什么技术,只想对是否 阅读全文
posted @ 2017-12-02 09:46 清泉^_^ 阅读(746) 评论(0) 推荐(1) 编辑
摘要: 我面过很多的人,也被很多的人面过。这里我将结合我多年的经历,跟大家分享下,我看到的初入职场的面试者,身上存在的一系列问题。避免这些问题,将使你的面试成功率达到百分之九十。(不得不承认,剩下的百分之十还有运气和缘分的成分) 一、过于谦卑 切勿“拍马”面试官,“过谦”自己。 我观察过很多的初入职场者,大 阅读全文
posted @ 2017-12-01 20:05 清泉^_^ 阅读(1735) 评论(10) 推荐(8) 编辑