JavaSE学习
文章平均质量分 76
HJsir
当你凝视深渊时,深渊也在凝视你
展开
-
Java -克隆实现方式 深克隆与浅克隆
我们平时复制一个值类型数据直接复制就好了,但是复制一个引用类型比如对象的时候就无从下手了,因为赋值只能赋引用,而如果手动操作把里面的值取出赋给新对象又太麻烦耗时了,有没有好办法?java提供了clone。克隆类型在Java语言中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、double、byte、boolean、char等简单数据类型,引用类原创 2018-05-10 16:43:43 · 3115 阅读 · 0 评论 -
Java Observer与Observable源码解析
前言Observer与Observable是JDK中内置的类型,是实现观察者模式重要的两个类,学习设计模式的时候只是简单的知晓这两个类中的一些方法使用,并不知道具体是咋样的,所以特地研究了一下其源码实现,如果需要知道怎么使用,请移步 设计模式总结Observer先来看下源码//此类位于util包中 package java.util; public interface O...原创 2018-05-14 16:14:49 · 459 阅读 · 0 评论 -
利用Synchronized、wait和notify简单实现生产者消费者模型
什么是生产者消费者模型生产者和消费者之间通过一个容器解决耦合,两者之间不直接通讯,每当消费者消费,都直接从容器中取,相当于找了个代理一样,每当生产者生产完不用等待消费者消费,消费者消费完也不用等待生产者生产,直接挂起即可。解决了消费与生产直接的不平衡,高效利用了资源。有哪些应用?比如java中的线程池、生产者把任务丢给线程池,线程池创建线程并处理任务,如果将要运行的任务数大于线程池的基...原创 2018-05-30 15:41:24 · 2351 阅读 · 2 评论 -
你真的了解Java引入异常机制的作用么?
前两天腾讯面试官问了我这样一个问题,为什么java要引入异常处理机制,让程序崩溃不是很不友好么?我之前也没思考过这个问题,临场发挥,想了想给出了这么一个回答:“发生了异常,说明程序已经发生错误了,如果不及时处理异常,错误将会方法,发生不可预期的损失,最好就是在源头掐灭它,而让程序崩溃也是无可奈何的事情,相比较损失,崩溃APP可能会让损失小点”。面试过后,我回头总结这次面试的时候又想起了这个点,觉得...原创 2018-06-07 17:39:18 · 2562 阅读 · 0 评论 -
Volatile 以DCL失效谈内存屏障用来禁止指令重排序的原理
引言大家都知道volatile关键字具有两重语义即:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。 第一个好理解,也就是说每次修改都立即更新到主内存,那么禁止重排序这个在网上更多的解释是说使用了内存屏障,使得前后的指令无法进行重排序。(关于volatile详解) 那么问题来了,什么是内存屏障?...原创 2018-06-16 16:45:22 · 2350 阅读 · 5 评论