摘要:
构建一个线程是有一定的代价的,因为涉及和操作系统的交互,如果程序中创建了大量的生命周期很短的线程,这时应该使用线程池(Thread Pool),一个线程池包含了等待运行的空闲线程,将 Runnable 对象传递给线程池,就会有一个线程调用 run 方法,当 run 方法结束时,线程不会死亡,而是在线程池中准备为下一个请求提供服务,Executors 类有许多静态工厂方法用来构建线程池,方法如... 阅读全文
摘要:
阻塞队列(BlockingQueue) 当试图向队列添加元素而队列已满,或是想从队列移除元素而队列为空的时候,阻塞队列导致线程阻塞,阻塞队列接口定义如下,他继承Queue接口: public interface BlockingQueue extends Queue { /** * 添加一个元素,如果队列满,则抛出 IllegalStateException异常 ... 阅读全文
摘要:
泛型程序设计意味着编写额代码可以被很多不同类型的对象所重用,并提供强类型校验,避免强制类型转换,并使程序具有更好的可读性和安全性。 定义简单泛型类 一个泛型类就是具有一个或多个类型变量的类,定义格式如下: public class Pair { …… } 泛型类引入了一个类型变量T,使用尖括号括起来,并放在类名的后面,泛型类可... 阅读全文
摘要:
反射库提供了大量操作Java代码的工具集,以便编写能够通道操作Java代码的程序,能够分析类能力的程序称为反射(reflective)。 Class 类 在程序运行期间,Java运行时系统始终为所有的对象维护一个称为运行时的类型标识,这个信息跟踪着每个对象所属的类,虚拟机利用运行时类型信息选择相应的方法执行,可以通过专门的类来访问这些信息,保存这些信息的类被称为 Class,... 阅读全文
摘要:
多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务,通常每个任务称为一个线程(thread),他是线程控制的简称,可以同时运行一个以上线程的程序称为多线程程序(multithreaded);多线程和多进程有哪些区别呢,本质的区别在于每个进程拥有自己的一整套变量,而线程则是共享数据,Java中启动一个线程的代码如下: // 线程任务的具体实现接口 public int... 阅读全文
摘要:
Java集合类库将接口(interface)和实现(implementation)分离,首先对集合接口进行说明。 集合接口 集合类的基本接口是 Collection 接口,该接口有两个基本方法: public interface Collection{ boolean add(E element); Iterator i... 阅读全文
摘要:
枚举类型的定义格式如: public enum Size{ SMALL,MEDIUM,LARGE,EXTRA_LARGE} 实际上,这个声明定义了一个类 size,该类是一个特殊的类,可以定义自己的数据字段、方法、可以实现接口,也可以定义自己的构造器。但枚举类使用 enum 定义后在编译后默认继承了 java.lang.Enum 类,而不是普通的继承 Object类。Enu... 阅读全文
摘要:
数据库 URL 在连接数据库时,我们必须使用各种与数据库类型相关的参数,例如主机名、端口号和数据库名称等,JDBC使用了一种与普通URL相类似的语法来描述数据库,JDBC URL 一般语法为: jdbc:subprotocol:other stuff 其中 subprotocol 用于选择连接到数据库的具体驱动程序 other stuff 参数的格式随所使用的 subprotocol 不同而不同 ... 阅读全文