在java的语法中,有一种主要的方法是每个人都要学习的,它的名称是main方法。在使用在和虚拟机密不可分,通过main进行启动程序,并检查类的装载情况。下面我们就main方法的概念…
在线程之间,如果没有一种规则对它们进行约束,那么在实际运行时会出现线程挤在一起的情况。这时候我们需要用到同步的理念,即给这些线程进行排序,让它们在运行时有一个顺序。下面我们就同步的…
在对java变量进行修饰时,有一种修饰符专门负责这类操作,也不用担心它的用法出错,那就是volatile。和synchronized最明显的区别是只针对变量,其他的类型不修饰。相信…
我们说synchronized让一个线程运行时,保证其安全性。那么在其中synchronized都可以进行哪些操作呢?本篇主要讲的是synchronized的修饰用法,能够对普通方…
之前讲了一些synchronized的用法,那么对于这些使用的产生,我们要从synchronized的原理中去寻找。就synchronized的使用而言,分为底层原理、同步原理和可…
在使用synchronized时,可以修饰方法,又可以结合锁进行一些操作。当然这也会带来一些不足之处。为了能弥足这种缺陷,在synchronized锁的状态上又分为三种情况。本篇我…
我们在进行锁的使用时,会把它放在对象头上。有些人不理解对象头的意思,其实我们可以把它看成是处理锁的一个工具,主要是负责对锁的功能进行使用。在使用synchronized锁的时候会有…
对象头在处理锁时,需要其中的两个结构共同作用才能实现,分别是Mark Word和Klass Pointer。前者把锁的数据进行存储,后者用来对类实例进行筛选。接下来我们就对象头这两…
有些人对使用ThreadLocal的使用不是很理解,这里还要从原理讲起。我们可以在其中找到许多方法,ThreadLocal可以加名称后面加入一些方法,然后结合在一起使用,可以把它看…
我们知道线程池可以对线程进行管理,而这个管理的功能,线程池没有进行参与,而是交给了Executor框架去执行。可以说Executor作为管理者,在线程池处设置了一个接口,然后对里面…