`
Technoboy
  • 浏览: 153962 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论
文章列表
1. Overview   Java中的序列化就是将Java对象的状态转化为字节序列,以便存储和传输的机制,在未来的某个时间,可以通过字节序列重新构造对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。这一切都归功于java.io包下的ObjectInputStream和ObjectOutputStream这两个类。 2. Serializable   要想实现序列化,类必须实现Serializable接口,这是一个标记接口,没有定义任何方法。如果一个类实现了Serializable接口,那么一旦这个类发布,“改变这个类的实现”的灵活 ...
7. Double-Checked Locking   双重检查锁定机制,是一个老生常谈的问题了。双重检查锁定机制已经被广泛的引用,特别是在多线程环境下的懒加载实现上。但是,如果没有额外的同步,它不能独立可靠的运行在Java平台。看这段代码: ...
6. 并发集合类   Hashtable是一个易于使用,线程安全的集合类,它的线程安全性是凭借代价换来的--Hashtable中的所有方法都是同步的。HashMap是Hashtable的继承者,通过一个不同步的基类和一个同步的包装器Collections.synchronizedMap解决了 ...
5 原子变量   java.util.concurrent.atomic包中添加原子变量类。所有原子变量都公开"比较并设置"原语,这些原语都是使用平台上可用的最快本机结构来实现的。原子变量类可以认为是volatile变量的泛化,它扩展了volatile变量的概念,来支持原子条件的比较并设置更新。读取和写入原子变量与读取和写入对volatile变量的访问具有相同的存取语义。concurrent.atomic包中原子变量类共12个,分成4组:计量器,域更新器,数组以及符合变量。最常用的原子变量是计量器:AtomicInteger,AtomicLong,AtomicBoolean以 ...
4 锁   锁是递归的,是基于每线程的。锁提供了两种主要特性:互斥(mutual exclusion)和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的。Java语言中,使用synchronized关键字可以实现锁机制,但是它有很多限制:   1)无法中断一个正在等候获得锁的线程。   2)没有办法改变锁的语意,即重入性,获取锁的公平性等。   3)方法和块内的同步,使得只能够够对严格 ...
2 线程死锁   死锁(dead lock)是指两个或多个线程都有权限访问两个或多个对象,并且每个线程都在已经获得某个对象锁的情况下等待其它线程已经得到的锁。假设线程A持有对象X的锁,并且正在试图获得对象Y的锁,同时,线程B已经拥有对象Y的锁,并在试图获得对象X的锁。此时因为线程互相等待释放锁而彼此都无法继续操作,死锁就产生了。以下是个死锁的例子: public class Dummy { // private long value; public Dummy(long value){ this.value = value; } public synch ...
3 线程异常   线程在执行其run方法时,很有可能抛出异常。而run方法签名中,并未声明会抛出任何检查型异常。但在实际程序中,run方法中极其可能抛出一个异常,从而导致此线程被终止。更糟糕的是,如果线程因为异常终止,我们无法在主线程中使用try...catch...进行异常的捕获,从而可能导致一些问题的发生,例如无法释放某些资源等。主线程之所以不处理子线程抛出的RuntimeException,是因为线程是异步的,子线程没结束,主线程可能已经结束了。Thread类中的setUncaughtExceptionHandler就是处理线程中那些未捕获的异常,更明确的说,它处理那些未捕获的运行时异常。 ...
1. Overiew   在实际编程中,我们经常会遇到这样一个情景:有一个对象A,存在属性方法,现在需要一个和A完全相同的新对象B,并且B的任何改动都不会影响到A中的值。那么,最常用的办法就是对A进行克隆。 2. How to Clone   在java.lang.Object中有一个clone方法,该方法的签名如下: protected native Object clone() throws CloneNotSupportedException;   该方法返回一个Object实例的拷贝,该实例拷贝具有:     1)拷贝对象是一个新对象而不是一个原对象引用。     2)拷贝的对 ...
1. 线程概述   线程(thread)的英文原意是"细丝",Java语言把"正在执行程序的主体"称为线程。如果"在某一时间点进行的处理"只有一个,或者是说"正在执行的程序主体"只有一个,则称之为单线程程序(single threaded program)。如下例: public static void main(String[] args) { for(int i = 0; i < 100; i ++){ System.out.println("Java Concurrent Pr ...
1. ClassLoader   类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。 2. ClassLoader Hierarchy   JVM在加载类时,使用的是双亲委托模式(delegation model),也就是说除了Bootstrap ClassLoader之外,每个ClassLoader都有一个Parent ClassLoader。Cl ...
1. ClassLoader   类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。 2. ClassLoader Hierarchy   JVM在加载类时,使用的是双亲委托模式(delegation model),也就是说除了Bootstrap ClassLoader之外,每个ClassLoader都有一个Parent ClassLoader。Cl ...
1. Overview UML设计类中,类的关系分为Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(组合关系)五种! 2. Generalization(泛化) Generalization(泛化)表现为继承或实现关系(is a)。具体形式为类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系。 3. Dependency(依赖)   表现为函数中的参数(use a)。是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类 ...
3. SingleConnectionFactory   SingleConnectionFactory类实现了ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory接口。 SingleConnectionFactory的createConnection()方法总是返回相同的Connection对象,如果出现Exception,共享连接可以自动的恢复。可以通过S ...
2. JmsAccessor 抽象类JmsAccessor是JmsTemplate,JmsDestinationAccessor,AbstractJmsListeningContainer扩展类的基类,提供了创建Connection和Session的方法。 protected Connection createConnection() throws JMSException { return getConnectionFactory().createConnection(); } protected Session createSession(Connection con) ...
1. DestinationResolver 将给定的目的地地址解析为目的地实例。 Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain) throws JMSException; pubSubDomain--true表示发布/订阅模式,解析后的地址为Topic,false表示为点对点模式,解析后的地址为Queue。 看一下DestinationResolver的层次结构图 1.1 DynamicDestinationResolver ...
Global site tag (gtag.js) - Google Analytics