JDK
在风雨中奔跑
这个作者很懒,什么都没留下…
展开
-
JDK中数据类型Boolean、Byte
Boolean是boolean原生类型的包装类型。对象的取值为true或false,其实在Boolean类中有一个私有的final的boolean原生类型的属性。可以使用valueOf(boolean)或valueOf(String)转化成Boolean对象类型,同时可以通booleanValue()从Boolean包装类型转换成boolean原生类型,java有自动装箱和拆箱的功能可以替代一些方原创 2015-11-10 00:18:20 · 973 阅读 · 0 评论 -
Thread源码浅析
一、Thread类的数据结构class Thread implements Runnable { //... private char name[];//线程的名字 private int priority;//线程的优先级 //... /* Whether or not the thread is a daemon thr原创 2016-10-29 00:09:25 · 398 阅读 · 0 评论 -
Java并发之Semaphore的源码分析
Semaphore是一个计数信号量,采用的是共享锁的方式来控制。主要对下面2个方法进行分析:acquire(int)来获取信号量,直到只有一个可以用或者出现中断。release(int)用来释放信号量,将信号量数量返回给Semaphorepublic void acquire(int permits) throws InterruptedException {原创 2016-10-06 23:06:11 · 1495 阅读 · 0 评论 -
Java并发之CountDownLatch源码分析
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。内部采用的公平锁和共享锁的机制实现。一、CountDownLatch的构造函数(采用的是一种公平锁机制)public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumen原创 2016-10-07 23:50:58 · 4705 阅读 · 4 评论 -
Java并发之线程池(一)
1.线程池的继承关系图2.线程池架构图 3.部分结构和类的分析 3.1Executor 从上图可以看出Executor线程池的根接口,代码如下:public interface Executor { /** * Executes the given command at some time in the future. The command *原创 2016-12-21 22:46:24 · 441 阅读 · 0 评论 -
Java并发之阻塞队列(二)
LinkedBlockingQueue一个由链表组合而成的有界阻塞队列. 1.LinkedBlockingQueue的数据结构 采用的是单链表结构 2.LinkedBlockingQueue源码分析 - 2.1继承关系public class LinkedBlockingQueue<E> extends AbstractQueue<E> implements Block原创 2017-01-01 12:45:52 · 366 阅读 · 0 评论 -
Java并发之阻塞队列(三)
SynchronousQueue是阻塞队列的一种,每一次insert操作必须等在另外一个线程的remove操作,同步队列没有任何容器,甚至一个队列容器都没有.同步队列类似于 CSP 和 Ada 中使用的 rendezvous 信道。它非常适合于传递性设计,在这种设计中,在一个线程中运行的对象要将某些信息、事件或任务传递给在另一个线程中运行的对象,它就必须与该对象同步。对于正在等待的生产者和使用原创 2017-01-02 19:10:34 · 411 阅读 · 0 评论 -
Java并发之线程池Executors(二)
Executors: 一个工厂类和提供了一些工具方法,提供了返回ExecutorService,ScheduledExecutorService,ThreadFactory,Callable方法 提供了返回线程池的方法,都是静态方法例如: 一、部分方法列表public static ExecutorService newFixedThreadPool(int nThreads); //创建一个原创 2016-12-22 23:32:50 · 393 阅读 · 0 评论 -
Java并发之线程池(三)
一、前言2016年即将过去,要抓紧时间,夯实java基础知识部分,为以后学习的新的知识做准备。二、线程池基本原理图 三、ThreadPoolExecutor的内部结构 1.Worker在里面是一个核心的内部类 private final class Worker extends Abst原创 2016-12-24 23:07:29 · 636 阅读 · 0 评论 -
Java并发之工具类CyclicBarrier
CyclicBarrier是java并发的工具类,它允许一组线程互相等待,直到到达某个公共屏障点。因为该barrier 在释放等待线程后可以重用,所以称它为循环的barrier。CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态。 看一下使用实例imp原创 2017-01-05 00:28:08 · 474 阅读 · 0 评论 -
Java并发之阻塞队列(一)
1.阻塞队列是一个增加了2个附加操作的队列,这2个操作是:当队列中元素为空时,获取元素线程会等待队列不为空,当队列满时,存储线程会等待队列中有空闲才会操作.这种操作常用于生产者和消费者的场景。阻塞队列提供了四种处理方法: 方法\处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e,time,u原创 2016-12-31 12:49:38 · 561 阅读 · 1 评论 -
java的四种引用
在java中引用分为4中,强引用(Strong Reference),弱引用(WeakReference),软引用(SoftReference),虚引用(PhantomReference)1.强引用 强引用是我们在编程过程中使用的最简单的引用,如代码String s=”abc”中变量s就是字符串对象”abc” 的 一个强引用。任何被强引用指向的对象都不能被垃圾回收器回收原创 2017-02-11 20:54:54 · 454 阅读 · 0 评论 -
Java IO字节输入流常见类进行分析(一)
一、InputStream 所有字节输入的父类,是一个抽象类。 public abstract int read() throws IOException从流中读取下一个字节的数据,返回的数据是int类型的范围在0~255之间,如果流中没有数据,将会返回-1,这个方法将会阻塞直到流中有数据可用,这是一个抽象方法,子类必须提供方法的实现。 public int read(byte b[]) thr原创 2017-02-19 23:55:42 · 1189 阅读 · 0 评论 -
Java IO字节输入流常见类进行分析(二)
一、FileInputStream 从文件系统中读取一个文件转换成的字节 数据结构:public class FileInputStream extends InputStream{ /* File Descriptor - handle to the open file */ private final FileDescriptor fd; /* The path of原创 2017-02-21 23:17:45 · 910 阅读 · 0 评论 -
Java IO流整体结构
Java IO 部分类图结构:IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字节流和字符流的区别读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。结论:只要是处理纯文本数据转载 2017-02-14 09:03:21 · 532 阅读 · 0 评论 -
Java IO字节输出流常见类进行分析(三)
一、OutputStream 一个抽象类,所有字节输出流的父类,一个输出流可以接受要输出的字节和发送到目的位置。 write(int):将一个字节输出。 flush():刷出数据,将缓冲区的数据刷出到目的地。 close():关闭流,是否系统资源,关闭之后不能重复打开并接不能重复打开。 二、ByteArrayOutputStream 将数据写入到数组中,缓冲区自动的增长。关闭流没有影响,原创 2017-02-23 22:18:35 · 511 阅读 · 0 评论 -
Java并发之synchronized的解析
在JDK中没有太多的对synchronzied的解析,主要是同步作用。下面通过jvm的中synchronizer.cpp的源码来分析在这里可以下载jvm源码:http://hg.openjdk.java.net/synchronzier.cpp的目录在:hotspot-9646293b9637\src\share\vm\runtimesynchronized同步底层使用JNI调用Obj原创 2016-10-06 16:56:07 · 1148 阅读 · 0 评论 -
Java并发之AtomicInteger源码分析
一、AtomicInteger的数据结构二、构造方法原创 2016-10-29 22:22:26 · 518 阅读 · 0 评论 -
Class类源码浅析
在java运行的应用中,类和接口代表着Class的实例。枚举是类的一种,注解是接口的一种,数组是属于类。Class的构造函数//只允许JVM创建Class对象private Class() {} Class的部分函数通过全类名,获取ClassClass forName(String className) 通过Class对象获取类的实例T newInstance() 获取类的名称,原创 2016-07-12 19:32:37 · 615 阅读 · 0 评论 -
JDK中数据类型Character、Double、Float
Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。char占2个字节(16位)。在Character类中定义了很多 Unicode 规范中的常规类别。在Character内部定义了2个内部类,Character.Subset和Character.UnicodeBlock在Chara原创 2015-11-10 23:10:26 · 1071 阅读 · 0 评论 -
JDK数据类型Short、Long
Short 类在对象中包装基本类型 short 的值。一个 Short 类型的对象只包含一个 short 类型的字段。short的取值范围-32768~32767,Short类中有转化成int,byte,long,double,float,String类型的方法,short跟char一样占2个字节。在Short类中有一个short缓存机制ShortCac原创 2015-11-11 21:52:17 · 1106 阅读 · 0 评论 -
JDK类Object、Number
类Object是类层次结构的根类。每个类都使用 Object 作为超类。Object中的equals源码Object中的toString()源码notify() 唤醒在此对象监视器上等待的单个线程。notifyAll() 唤醒在此对象监视器上等待的所有线程。wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前原创 2015-11-11 22:21:47 · 645 阅读 · 0 评论 -
JDK类Math
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。Math中包含方法都是静态的,而且构造方法是私有的,不能直接产生实例。在类中定义了静态常量E和PI的值,包含很多的数学方法,例如sina,cos,tan,min,max等,。原创 2015-11-12 20:56:15 · 835 阅读 · 0 评论 -
集合之TreeSet
TreeSet内部基于TreeMap的实现,内部的元素可以按照Comparable排序策略进行排序,与HashSet内部的方法类似。TreeSet的继承关系:NavigableMap是什么?看一下它的继承关系。从构造方法中也可以看出:下面是一些常用方法的源码:add(E)remove(Object)clear()isEmpty()原创 2016-04-12 13:10:44 · 295 阅读 · 0 评论 -
集合之LinkedHashSet
LinkedHashSet内部是基于LinkedHashMap实现,是由Hashtable和linkedlist实现的有序集合与HashSet不同,采用的是双向链表将entry连接而来。一、LinkedHashSet类的继承关系二、默认构造方法HashSet中的构造方法三、内部方法LinkedHashSet内部没有什么方法,主要是用HashSet中方法。原创 2016-04-12 13:31:29 · 560 阅读 · 0 评论 -
集合之HashMap
哈希表实现了Map接口,并且实现了map中的所有方法,HashMap粗略的等于Hashtable,除了线程安全和非空值外,这个 类不能保证是有序的map,其中有2个影响HashMap的性能一个capacity容量,另一个是load factory。数据结构图一、类的继承关系二、类中的部分属性三、构造方法四、内部类EntryEntry中的方法原创 2016-04-12 15:07:53 · 446 阅读 · 0 评论 -
Properties类的使用和源码浅析
Properties类代表持久化属性集合。Properties能够保存到流中,也可以从流中加载。而每一个key和它对应的value在属性列表中用string来表示。 一、类的继承关系 从继承关系图中可以知道Properties的内部是有Hashtable实现的。 二、部分方法的源码原创 2016-04-25 11:09:27 · 933 阅读 · 0 评论 -
集合之Collection与Collections
Collection是集合的根接口,代表着一组对象,有些的可以重复,有的不可以重复,有的是有序的,有的无序的。JDK没有提供一个类直接实现方法,而是提供了List和Set子接口。接口的继承关系:内部的方法Collections是一个工具类,里面都是一些静态方法对集合进行处理,例如有对集合进行排序,找集合中最大值,最小值,shuffle(乱序),binarySearch(二分原创 2016-04-12 17:13:35 · 420 阅读 · 0 评论 -
Arrays用法整理
本文将整理java.util.Arrays工具类比较常用的方法: 本文介绍的方法基于JDK 1.7 之上。 1. asList方法 Java代码 @SafeVarargs public static List asList(T... a) { return new ArrayList} 使用该方转载 2016-04-12 19:19:52 · 1133 阅读 · 0 评论 -
集合之ArrayList
ArrayList是一个列表集合,实现了所有的List接口中的方法,允许存放任何元素,包括null,这个类与Vector很相似,除了synchronized不同。它能够根据元素的添加自动的增加集合的长度,默认大小为10。集合的默认大小10:Method:E get(int index)检查是否超越界限set(int原创 2016-04-10 10:59:32 · 1872 阅读 · 0 评论 -
集合之Vector
Vector实现了自动增长的对象数组,与List相似,但是方法中加了锁机制,是线程安全的,它的默认大小为10。以下几个常用方法的源码:size()isEmpty()E get(int)set(int,E)add(E)remove(Object)removeElement(Object)原创 2016-04-10 11:44:30 · 295 阅读 · 0 评论 -
集合之Stack
Stack是一个后进先出的栈类。它继承Vector类。使用了Vector中的5个方法,经常的操作是push,pop,使用peek获得stack中顶部的元素,empty()可以判断stack是否为空,search方法是搜索元素在栈中的位置。以下是类中的一些方法源码E push(E)E pop()E peek()empty()int search(O原创 2016-04-10 14:29:50 · 296 阅读 · 0 评论 -
集合之LinkedList
LinkedList实现List接口,并且实现了接口中的所有方法,这个操作可以作为一个栈来使用,同时也实现Deque接口,实现了add,poll方法可以为一个队列。内部是使用带头结点的循环双向链表。结构如下图:类的继承实现关系内部类Entry的结构部分方法源码剖析add(E e)添加一个元素的过程。getFirst()原创 2016-04-11 11:31:49 · 624 阅读 · 0 评论 -
集合之HashSet
HashSet实现了Set接口,内部实际上是一个HashMap实例,而HashSet只是用了HashMap中的key,是一个无序的集合,允许值为null,基本操作都是常量时间,非线程安全。一些主要方法的源码:可能看完这写,知道HashSet是HashMap实现的,可能引起我们对HashMap的研究。原创 2016-04-11 16:06:58 · 291 阅读 · 0 评论 -
Java IO字符流常见类进行分析(四)
一、Reader 用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。 ready() 判断是否准备读取此流。 read() 读取单个字符,这个方法将会阻塞,直到字符可用。 二、BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字原创 2017-02-23 22:46:46 · 414 阅读 · 0 评论