随笔分类 -  Java

摘要:内部类是一种编译器现象,与虚拟机无关。编译器将会把内部类翻译成用美元符号$分隔外部类名与内部类名的常规类文件,而虚拟机对此一无所知。编译器为了引用外部类,生成了一个附加的实例域this$0为什么要用内部类?内部类可以访问所在类域中的数据(包括私有);内部类可以在同一包中被隐藏;匿... 阅读全文
posted @ 2015-02-26 21:29 Ydoing 阅读(192) 评论(0) 推荐(0)
摘要:当Java类库没有提供适合的同步工具时,就需要构建自定义同步工具。可阻塞状态依赖操作的结构acquir lock on object state;//请求获取锁while(precondition does not hold){//没有满足前提条件 release lock;//先释放锁 w... 阅读全文
posted @ 2015-02-09 21:52 Ydoing 阅读(299) 评论(0) 推荐(0)
摘要:在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock.ReentrantLock概况ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, 定... 阅读全文
posted @ 2015-02-08 11:38 Ydoing 阅读(293) 评论(0) 推荐(0)
摘要:任务的定义大多数并发程序都是围绕任务进行管理的.任务就是抽象和离散的工作单元.任务的执行策略1.顺序的执行任务这种策略的特点是一般只有按顺序处理到来的任务.一次只能处理一个任务,后来其它任务都要等待处理.响应性很糟糕,吞吐量低.系统资源利用率低.2.显示的为任务创建线程为每个任务创建对应一个线程,响... 阅读全文
posted @ 2015-01-29 17:06 Ydoing 阅读(491) 评论(0) 推荐(0)
摘要:在测试接口过程中,有时我们希望知道自己期望传入的参数是什么,以此来判断传入参数的正确行,这时就需要用到EassyMock的capture方法.该方法能捕获传入的参数存放到自定义的变量中,然后用捕获的参数与期望的参数进行对比,从而判断调用接口时使用的参数是否正确.下面用例子演示一下:要测试的接口p... 阅读全文
posted @ 2015-01-28 11:51 Ydoing 阅读(478) 评论(0) 推荐(0)
摘要:虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了。easymock为此提供了IArgumentMatcher 接口来让我们实现自定义的参数匹配器。 我们还是用例子来说话:要测... 阅读全文
posted @ 2015-01-27 15:26 Ydoing 阅读(692) 评论(0) 推荐(0)
摘要:Java 初始化字段方式和顺序:类加载时直接初始化静态字段;类加载时调用静态方法初始化静态字段;实例化对象时,在调用构造函数之前代码块中初始化字段;实例化对象时,在调用构造函数之时初始化字段; 初始化字段顺序1->2->3->4代码如下:public class Employee {//实例化对象... 阅读全文
posted @ 2015-01-22 20:33 Ydoing 阅读(377) 评论(0) 推荐(0)