随笔分类 -  Java

摘要:在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设 阅读全文
posted @ 2017-05-09 16:10 byhieg 阅读(95771) 评论(4) 推荐(17) 编辑
摘要:之前因为找实习的缘故,博客1个多月没有写了。找实习的经历总算告一段落,现在重新更新博客,这次的内容是分析Java并发包中的阻塞队列 关于阻塞队列,我之前是一直充满好奇,很好奇这个阻塞是怎么实现。现在我们先看一个该抽象类的实现类ArrayBlockingQueue。下面全部的代码均在 "github" 阅读全文
posted @ 2017-05-04 16:52 byhieg 阅读(2813) 评论(1) 推荐(0) 编辑
摘要:我们在编写Java程序之后,会通过编译器得到一个class文件,这个class文件是如何与JVM进行配合的呢?类中的信息是如何变成JVM可以使用的Java类型呢?这些都是类加载机制做到的。 虚拟机把描述类的数据从class文件中加载到内存里,并对数据进行校验,转换解析和初始化,最终形成被虚拟机直接使 阅读全文
posted @ 2017-03-29 15:58 byhieg 阅读(800) 评论(0) 推荐(0) 编辑
摘要:这是理解JVM的第一篇文章,这篇文章主要介绍JVM的总体结构和每一个部分的功能。内容比较少,对于每一个部分详细的内容,放到后面的文章中,逐步展开。这个系列总结完,应该会对JVM有一个整体且深入的认识了。 JVM运行时数据区 这是网上的一个JVM结构的示意图,还是比较清晰明了的说明了JVM结构。 这篇 阅读全文
posted @ 2017-03-20 17:09 byhieg 阅读(1741) 评论(1) 推荐(1) 编辑
摘要:LinkedList与ArrayList都是List接口的具体实现类。LinkedList与ArrayList在功能上也是大体一致,但是因为两者具体的实现方式不一致,所以在进行一些相同操作的时候,其效率也是有差别的。 对于抽象的数据结构——线性表而言,线性表分为两种,一种是顺序存储结构的顺序表,另一 阅读全文
posted @ 2017-02-15 15:49 byhieg 阅读(6785) 评论(2) 推荐(3) 编辑
摘要:ArrayList是Java集合框架中一个经典的实现类。他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小。处于练手的目的,实现一个简单的ArrayList,并且把实现的过程在此记录。 实现的ArrayList主要的功能如下: 默认构造器和一个参数的有参构造器 add 阅读全文
posted @ 2017-02-08 12:12 byhieg 阅读(7343) 评论(4) 推荐(4) 编辑
摘要:之前已经说道,JVM提供了synchronized关键字来实现对变量的同步访问以及用wait和notify来实现线程间通信。在jdk1.5以后,JAVA提供了Lock类来实现和synchronized一样的功能,并且还提供了Condition来显示线程间通信。 Lock类是Java类来提供的功能,丰 阅读全文
posted @ 2017-01-28 23:42 byhieg 阅读(11881) 评论(5) 推荐(3) 编辑
摘要:在使用多线程的时候,经常需要多个线程进行协作来完成一件事情。在前面两章分析了Java多线程的基本使用以及利用 来实现多个线程同步调用方法或者执行代码块。但上面两章的内容涉及到的例子以及使用的多线程代码都是独自运行,两个程序除了竞争同一个对象以外,没有任何联系。<! more 这次内容将讲解当多个线程 阅读全文
posted @ 2017-01-16 00:27 byhieg 阅读(4009) 评论(0) 推荐(0) 编辑
摘要:Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息。通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: Class对象 构造器 变量 方法 私有变量与私有方法 注解 泛型 数组 本文也将从上面几个方面来介绍Java反射。本文涉及的所有代码 阅读全文
posted @ 2017-01-10 01:15 byhieg 阅读(19071) 评论(1) 推荐(4) 编辑
摘要:这篇文章主要讲解Java在创建对象的时候,初始化的顺序。主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不会创建父类对象 例子1——继承关系中初始化顺序 先看简单的情况,看下面的例子: 其执行的结果如下: 阅读全文
posted @ 2017-01-06 18:18 byhieg 阅读(595) 评论(0) 推荐(1) 编辑
摘要:在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松。但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的。这样,一个对象同时被多个线程访问,会出现处理的结果和预期不一致的可能。因此,需要了解如何对对象及变量并发访问,写出线程安全的程序,所谓线程 阅读全文
posted @ 2017-01-06 00:31 byhieg 阅读(7777) 评论(2) 推荐(1) 编辑
摘要:这篇是Java多线程基本用法的一个总结。 本篇文章会从一下几个方面来说明Java多线程的基本用法: 1. 如何使用多线程 2. 如何得到多线程的一些信息 3. 如何停止线程 4. 如何暂停线程 5. 线程的一些其他用法 所有的代码均可以在 "char01" 如何使用多线程 启动线程的两种方式 Jav 阅读全文
posted @ 2016-12-28 17:32 byhieg 阅读(977) 评论(0) 推荐(1) 编辑
摘要:回调在维基百科中定义为: 在计算机程序设计中,回调函数,是指通过函数参数传递到其他代码的,某一块可执行代码的引用。 其目的是允许底层代码调用在高层定义的子程序。 举个例子可能更明白一些:以Android中用 进行网络请求为例,这个是异步回调的一个例子。 在发起网络请求之后,app可以继续其他事情,网 阅读全文
posted @ 2016-11-24 17:46 byhieg 阅读(6543) 评论(0) 推荐(1) 编辑
摘要:这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式: 1. 用IDEA自带的打包形式 2. 用Maven插件 打包 3. 用Maven插件 打包 用IDEA自带的打包方式: 打开IDEA的 ,进入项目配置页面。如下图: 点击 ,进入 配置页面,点击 + ,选择如下图的 阅读全文
posted @ 2016-11-06 23:17 byhieg 阅读(148724) 评论(0) 推荐(12) 编辑
摘要:泛型是JavaSE5引入的一个新概念,但是这个概念在编程语言中却是很普遍的一个概念。下面,根据以下内容,我们总结下在Java中使用泛型。 1. 泛型使用的意义 2. 什么是泛型 3. 泛型类 4. 泛型方法 5. 泛型接口 6. 泛型擦除 7. 通配符 泛型使用的意义 一份好程序的一个特点就是这个程 阅读全文
posted @ 2016-09-18 21:21 byhieg 阅读(1080) 评论(0) 推荐(1) 编辑
摘要:这篇文章主要讲述Java 内部类的相关知识,主要讲解下面的知识点。 1. 内部类的概念 2. 内部类的特点与使用 3. 多种形式内部类 4. 为什么要使用内部类 内部类的概念 内部类是指在一个类的内部定义了另一个类。例如下面的代码中例子,就是一个简单的内部类。 在这个类中,我们可以看出内部类B就像A 阅读全文
posted @ 2016-07-26 00:17 byhieg 阅读(618) 评论(0) 推荐(1) 编辑
摘要:Java 抽象类 在上文我们的多态的讲解中,我们父类设定了一些方法,设定的主要目的是让子类继承父类去覆写那些方法,来展示不同的结果。换句话说,我们不关心父类方法里的具体实现,反正会被子类的方法覆写,那么我们就可以让父类更抽象一下,抽象到只有方法的声明,而没有方法体。我们管这种方法叫做抽象方法,管包含 阅读全文
posted @ 2016-07-18 18:16 byhieg 阅读(873) 评论(0) 推荐(1) 编辑
摘要:之前我们的文章讲了Java的封装和继承,封装讲的时候,并没有体现出来封装的强大之处,反而还要慎用封装。因为这时的封装还没有和多态联系到一起,还无法看出向上转型的厉害之处。 多态,是指同一个行为具有多种的表现形式。同一个方法根据调用对象的不同而产生多种结果。对于Java而言,多态就是程序中定义的引用变 阅读全文
posted @ 2016-07-13 19:20 byhieg 阅读(888) 评论(0) 推荐(2) 编辑
摘要:上文 "Java 浅析三大特性之一封装" 我们说到Java是一个注重编写类,注重于代码和功能复用的语言。Java实现代码复用的方式有很多,这里介绍一个重要的复用方式——继承。 在介绍继承之前,我们要明确一点,继承是一个比较复杂的编写类的方式,他会破坏掉父类的封装,因此只有我们确定需要用到继承的时候, 阅读全文
posted @ 2016-07-12 21:35 byhieg 阅读(2983) 评论(2) 推荐(3) 编辑
摘要:在说Java 三个特性之前,我们先了解一下什么是面向对象,以及为什么Java是面向对象的语言。 面向对象是区别于面向过程的一种编程的思想。我们可以通过这个例子 "冰箱装大象的例子" 来了解一下面向对象与面向过程的区别。 想必通过这个例子,应该清楚了面向对象与面向过程的区别。 面向过程是指我们主要注重 阅读全文
posted @ 2016-07-11 15:39 byhieg 阅读(14775) 评论(0) 推荐(3) 编辑