J2SE
Technoboy
这个作者很懒,什么都没留下…
展开
-
Java Class Loader
1. ClassLoader 类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。 2. ClassLoader Hierarchy J...2011-04-17 18:52:04 · 129 阅读 · 0 评论 -
Java RMI (1)
1. Java RMI Java Remote Method Invocation(Java远程方法调用)允许程序员创建分布式Java技术为基础的应用,可以调用不同JVM远程对象上的远程方法。RMI使用对象序列化去marshal(编码),unmarshal(解码)参数进行,不截断类型,支持面向对象的多态性。 2. Stub [img]http://dl.iteye.com/upload...2011-04-01 15:54:03 · 94 阅读 · 0 评论 -
Java Object Serialization
1. Overview Java中的序列化就是将Java对象的状态转化为字节序列,以便存储和传输的机制,在未来的某个时间,可以通过字节序列重新构造对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。这一切都归功于java.io包下的ObjectInputStream和ObjectOutputStream这两个类。 2. Ser...2011-06-02 10:57:16 · 163 阅读 · 0 评论 -
Java Concurrent Programming (7)
7. Double-Checked Locking 双重检查锁定机制,是一个老生常谈的问题了。双重检查锁定机制已经被广泛的引用,特别是在多线程环境下的懒加载实现上。但是,如果没有额外的同步,它不能独立可靠的运行在Java平台。看这段代码: [code="java"] public class Singleton { private Singleton instance = nu...2011-05-24 10:31:48 · 98 阅读 · 0 评论 -
Java Concurrent Programming (6)
6. 并发集合类 Hashtable是一个易于使用,线程安全的集合类,它的线程安全性是凭借代价换来的--Hashtable中的所有方法都是同步的。HashMap是Hashtable的继承者,通过一个不同步的基类和一个同步的包装器Collections.synchronizedMap解决了线程安全性问题。通过将基本的功能从线程安全性中分离开来,Collections.synchronizedM...2011-05-16 11:46:17 · 103 阅读 · 0 评论 -
Java Concurrent Programming (5)
5 原子变量 java.util.concurrent.atomic包中添加原子变量类。所有原子变量都公开"比较并设置"原语,这些原语都是使用平台上可用的最快本机结构来实现的。原子变量类可以认为是volatile变量的泛化,它扩展了volatile变量的概念,来支持原子条件的比较并设置更新。读取和写入原子变量与读取和写入对volatile变量的访问具有相同的存取语义。concurrent.a...2011-05-12 21:09:31 · 112 阅读 · 0 评论 -
Java Concurrent Programming (4)
4 锁 锁是递归的,是基于每线程的。锁提供了两种主要特性:互斥(mutual exclusion)和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的。Java语言中,使用synch...2011-05-11 21:12:28 · 99 阅读 · 0 评论 -
Java Concurrent Programming (2)
2 线程死锁 死锁(dead lock)是指两个或多个线程都有权限访问两个或多个对象,并且每个线程都在已经获得某个对象锁的情况下等待其它线程已经得到的锁。假设线程A持有对象X的锁,并且正在试图获得对象Y的锁,同时,线程B已经拥有对象Y的锁,并在试图获得对象X的锁。此时因为线程互相等待释放锁而彼此都无法继续操作,死锁就产生了。以下是个死锁的例子: [code="java"] public ...2011-05-10 21:27:41 · 81 阅读 · 0 评论 -
Java Concurrent Programming (3)
3 线程异常 线程在执行其run方法时,很有可能抛出异常。而run方法签名中,并未声明会抛出任何检查型异常。但在实际程序中,run方法中极其可能抛出一个异常,从而导致此线程被终止。更糟糕的是,如果线程因为异常终止,我们无法在主线程中使用try...catch...进行异常的捕获,从而可能导致一些问题的发生,例如无法释放某些资源等。主线程之所以不处理子线程抛出的RuntimeException...2011-05-10 09:13:41 · 100 阅读 · 0 评论 -
Java Object Cloning
1. Overiew 在实际编程中,我们经常会遇到这样一个情景:有一个对象A,存在属性方法,现在需要一个和A完全相同的新对象B,并且B的任何改动都不会影响到A中的值。那么,最常用的办法就是对A进行克隆。 2. How to Clone 在java.lang.Object中有一个clone方法,该方法的签名如下: [code="java"] protected native O...2011-05-05 22:03:25 · 118 阅读 · 0 评论 -
Java Concurrent Programming (1)
1. 线程概述 线程(thread)的英文原意是"细丝",Java语言把"正在执行程序的主体"称为线程。如果"在某一时间点进行的处理"只有一个,或者是说"正在执行的程序主体"只有一个,则称之为单线程程序(single threaded program)。如下例: [code="java"] public static void main(String[] args) { for(i...2011-05-04 21:39:40 · 154 阅读 · 0 评论 -
Java Class Loader
1. ClassLoader 类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。 2. ClassLoader Hierarchy J...2011-04-17 18:54:02 · 101 阅读 · 0 评论 -
Java RMI (2)
8. Activation 通过调用UnicastRemoteObject.exportObject()方法发布的远程对象的生命周期是从发布起,一直到所在应用停止为止。RMI的activation机制允许在rmid中发布可激活的激活描述符,只有当客户端发起远程调用时才真正构造远程对象。 8.1 MyRemote类 [code="java"] public interface My...2011-04-02 10:11:11 · 96 阅读 · 0 评论