摘要: Synchronized 关键字结合对象的监视器,JVM 为我们提供了一种『内置锁』的语义,这种锁很简便,不需要我们关心加锁和释放锁的过程,我们只需要告诉虚拟机哪些代码块需要加锁即可,其他的细节会由编译器和虚拟机自己实现。 可以将我们的『内置锁』理解为是 JVM 的一种内置特性, 所以一个很显著的问阅读全文
posted @ 2018-10-10 20:20 Single_Yam 阅读(143) 评论(0) 编辑
摘要: 计算机系统中,CPU 和内存之间是通过总线进行通信的,当某个线程占有 CPU 执行指令的时候,会尽可能的将一些需要从内存中访问的变量缓存在自己的高速缓存区中,而修改也不会立即映射到内存。 而此时,其他线程将看不到内存中该变量的任何改动,这就是我们说的内存可见性问题。连续的文章中,我们总共提出了两种解阅读全文
posted @ 2018-09-30 16:42 Single_Yam 阅读(231) 评论(0) 编辑
摘要: 『中断技术』其实是计算机系统中很重要的一个概念,甚至有人说,我们的操作系统就是「中断驱动的」。 中断,其实指的就是程序在执行过程中,发生了某些非正常的事件指示当前进程不能继续执行了,应当得到暂停或终止,而通知正在执行的进程暂停执行的这个操作就叫『中断』。 中断同时也是我们实现并发的基础,中断一个线程阅读全文
posted @ 2018-09-14 15:47 Single_Yam 阅读(233) 评论(1) 编辑
摘要: 上篇文章我们介绍了 synchronized 这个关键字,通过它可以基本实现线程间在临界区对临界资源正确的访问与修改。但是,它依赖一个 Java 对象内置锁,某个时刻只能由一个线程占有该锁,其他试图占有的线程都得阻塞在对象的阻塞队列上。 但实际上还有一种情况也是存在的,如果某个线程获得了锁但在执行过阅读全文
posted @ 2018-09-07 15:37 Single_Yam 阅读(223) 评论(1) 编辑
摘要: 使用 Synchronized 关键字来解决并发问题是最简单的一种方式,我们只需要使用它修饰需要被并发处理的代码块、方法或字段属性,虚拟机自动为它加锁和释放锁,并将不能获得锁的线程阻塞在相应的阻塞队列上。 基本使用 我们在上篇文章介绍线程的基本概念时,提到了多线程的好处,能够最大化 CPU 使用效率阅读全文
posted @ 2018-08-27 13:42 Single_Yam 阅读(361) 评论(1) 编辑
摘要: 按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发集合源码的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或少的要涉及一些并发的处理。 这一系列文章只能算是对并发这块基本理论知识的一个总结与介绍,想要成为并发阅读全文
posted @ 2018-08-20 09:54 Single_Yam 阅读(765) 评论(1) 编辑
摘要: 所谓的『JAVA 对象序列化』就是指,将一个 JAVA 对象所描述的所有内容以文件 IO 的方式写入二进制文件的一个过程。关于序列化,主要涉及两个流,ObjectInputStream 和 ObjectOutputStream。 很多人关于『序列化』的认知只停留在 readObject 和 writ阅读全文
posted @ 2018-07-16 17:49 Single_Yam 阅读(478) 评论(1) 编辑
摘要: 以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高。 于是就有人提出来一种标记式高耦合的配置方式,『注解』。方法上可以进行注解,类上也可以注解,字段属性上也可以注解,反正几乎需要配置的地方都可以进行注解。阅读全文
posted @ 2018-07-11 16:21 Single_Yam 阅读(1232) 评论(1) 编辑
摘要: 之前的文章我们详细的介绍了 JDK 自身的 API 所提供的一种动态代理的实现,它的实现相对而言是简单的,但是却有一个非常致命性的缺陷,就是只能为接口中的方法完成代理,而委托类自己的方法或者父类中的方法都不可能被代理。 CGLIB 应运而生,它是一个高性能的,底层基于 ASM 框架的一个代码生成框架阅读全文
posted @ 2018-07-05 19:52 Single_Yam 阅读(300) 评论(2) 编辑
摘要: 『动态代理』其实源于设计模式中的代理模式,而代理模式就是使用代理对象完成用户请求,屏蔽用户对真实对象的访问。 举个最简单的例子,比如我们想要「翻墙」访问国外网站,因为我们并没有墙掉所有国外的 IP,所以你可以将你的请求数据报发送到那些没有被屏蔽的国外主机上,然后你通过配置国外主机将请求转发到目的地并阅读全文
posted @ 2018-07-02 16:21 Single_Yam 阅读(459) 评论(4) 编辑