Java

Java IO1:IO和File

IO大多数的应用程序都要与外部设备进行数据交换,最常见的外部设备包含磁盘和网络。IO就是指应用程序对这些设备的数据输入与输出,Java语言定义了许多类专门负责各种方式的输入、输出,这些类都被放在java.io包中。 File类File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的方法...
代码星球·2020-07-29

Java异常

异常概述异常也称为例外,是在程序运行过程中发生的并且会打断程序正常执行的事件,比如算术异常、空指针异常、文件找不到异常。所以在程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理。这样才能保证程序可以正常运行。Java的异常处理机制也秉承着面向对象的基本思想,在Java中,所有的异常都是以类的形式存在,除了内置的...
代码星球·2020-07-29

Java语法糖4:内部类

内部类最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类。内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.class。所以内部类的名...
代码星球·2020-07-29

Java语法糖3:泛型

泛型初探在泛型(Generictype或Generics)出现之前,是这么写代码的:publicstaticvoidmain(String[]args){Listlist=newArrayList();list.add("123");list.add("456");System.out.println((String)...
代码星球·2020-07-29

Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger

前言在多线程环境下,JDK给开发者提供了许多的组件供用户使用(主要在java.util.concurrent下),使得用户不需要再去关心在具体场景下要如何写出同时兼顾线程安全性与高效率的代码。之前讲过的线程池、BlockingQueue都是在java.util.concurrent下的组件,Timer虽然不在java....

Java多线程21:多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask

CyclicBarrier接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作。看一下CyclicBarrier的使用实例:publicstatic...

Java语法糖2:自动装箱和自动拆箱

前言一开始想学学自动拆箱和自动装箱是被这个名字吸引到,听上去好像很高端的样子,其实认真看一下,自动拆箱、自动装箱就是很简单的内容。 自动拆箱和自动装箱Java为每种基本数据类型都提供了对应的包装器类型。举个例子:publicclassTestMain{publicstaticvoidmain(String[]...

Java语法糖1:可变长度参数以及foreach循环原理

语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖。语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质性的功能改进...

Java虚拟机12:Java内存模型

什么是Java内存模型Java虚拟机规范中试图定义一种Java内存模型(JavaMemoryModel,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此,会由于不同平台上内存模型的...
代码星球·2020-07-29

Java多线程19:定时器Timer

前言定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单、定时更新某些缓存、定时清理一批不活跃用户等等。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理,所以它和多线程技术关联还是相当大的。那和ThreadLocal一样,还是先讲原理...
代码星球·2020-07-29

Java虚拟机11:运行期优化

前言http://www.cnblogs.com/xrq730/p/4839245.html,HotSpot采用的是解释器+编译器并存的架构,之前的这篇文章里面已经讲过了,本文只是把即时编译器这块再讲得具体一点而已。当然,其实本文的内容也没多大意义,90%都是概念上的东西,对于实际开发、实际解决项目里面的疑难问题并没有...
代码星球·2020-07-29

Java多线程18:线程池

使用线程池与不使用线程池的差别先来看一下使用线程池与不使用线程池的差别,第一段代码是使用线程池的:publicstaticvoidmain(String[]args){longstartTime=System.currentTimeMillis();finalList<Integer>l=newLinked...
代码星球·2020-07-29

Java多线程17:中断机制

概述之前讲解Thread类中方法的时候,interrupt()、interrupted()、isInterrupted()三个方法没有讲得很清楚,只是提了一下。现在把这三个方法同一放到这里来讲,因为这三个方法都涉及到多线程的一个知识点----中断机制。Java没有提供一种安全、直接的方法来停止某个线程,而是提供了中断机...
代码星球·2020-07-29

Java多线程16:线程组

线程组可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示:线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。 线程关联线程组:1级关联所谓1级关联就是父对象中有子对象,但并不创建孙对象。这种情况在开...
代码星球·2020-07-29

Java虚拟机10:类加载器

类与类加载器虚拟机设计团队把类加载阶段张的"通过一个类的全限定名来获取此类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为"类加载器"。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限定于类加载阶段。对于任意一个类,...
代码星球·2020-07-29