摘要:上接《Java编程思想》之为什么需要内部类?public abstract class Event{ private long eventTime; protected final long delayTime; public Event(long delayTime){ this.delayTime = delayTime; start(); } public void start(){ eventTime = System.currentTimeMillis() + delayTime; } public boo... 阅读全文
《Java编程思想》之为什么需要内部类?
2012-01-29 19:45 by java线程例子, 702 阅读, 0 推荐, 收藏, 编辑
摘要:上接《Java编程思想》之内部类——深奥而复杂13、为什么需要内部类?1).内部类最吸引人注意的原因是:每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个就(接口的)实现,对于内部类都没有影响。2).一个类中以某种方式实现两个接口。由于接口的灵活性,你有两种选择:使用单一类,或者使用内部类。从实现观点看,以下俩种方式没什么区别。interface A{}
interface B{} class X implements A, B{} class Y implements A{ B makeB(){ return new B(){ ... 阅读全文
《Java编程思想》之内部类——深奥而复杂
2012-01-29 19:23 by java线程例子, 262 阅读, 0 推荐, 收藏, 编辑
摘要:1、当将内部类向上转型为其基类,尤其是转型为一个接口的时候,内部类就有了用武之地(从实现某个接口的对象,得到对此接口的引用,与向上转型为这个对象的基类,实质上效果是一样得。)这是因为此内部类——某个接口的实现——对于其他人来说能够完全不可见,并且不可用。所得到的只是指向基类或接口的引用,所以能够很方便地隐藏实现细节。interface Destination{ String readLabel();
}
interface Contents{ int value();
}
class Parce1{ private class PContents implements Con... 阅读全文
《Java编程思想》之接口(Java中实现多重继承?!)
2012-01-27 19:21 by java线程例子, 1084 阅读, 0 推荐, 收藏, 编辑
摘要:1、interface不仅仅只是一个极度抽象的类,因为它允许人们通过创建一个能够被向上转型为多种基类型的类,来实现某种类似C++多重继承变种的特性。2、像类一样,可以在interface关键字前面添加public关键字(但仅限于该接口在与其同名的文件中被定义),或者不添加它而使其只是具有包访问权限,这样它就只能在同一个包内可用。3、可以选择在接口中显示地将方法声明为public的,但即使你不这么做,它们也是public的。因此当实现一个接口时,在接口中被定义的方法必须被定义为public。4、Java中,在方法的继承过程中,其可访问权限不能被降低。5、接口也可以包含字段,但是它们隐式为stat 阅读全文
《Java编程思想》之多态(面向对象程序语言的第三基本特征)
2012-01-26 21:32 by java线程例子, 217 阅读, 0 推荐, 收藏, 编辑
摘要:1.在面向对象的程序设计语言中,多态是继承数据抽象和继承之后的第三基本特征。2.“封装”通过合并特征和行为来创建新的数据类型。3.“实现隐藏”则通过将细节“私有化”,把接口和实现分离开来。4.多态的作用则是消除类型之间的耦合关系。5.耦合就是指两个或两个以上的实体相互依赖于对方的一个量度。6.多态也称作动态绑定、后期绑定或运行时绑定。7.将一个方法调用同一个方法主体关联起来被称作“绑定”。8.“前期绑定”:程序执行前进行的绑定,由编译器和连接程序实现。面向对象的语言不需要选择就默认的绑定方式。9.Java中除了static方法和final方法(private方法属于final方法)之外,其它所 阅读全文
自己最近写的一组日志处理类(支持高并发处理)
2012-01-21 21:55 by java线程例子, 365 阅读, 0 推荐, 收藏, 编辑
摘要:下面的日志处理我在3000个线程同时调用,写20个文件,相当于每个文件150个线程不间断大规模写.没问题,我提高到10000时,出了问题,但不是日志代码的问题,而是系统创建新的线程时报错,建到3500个线程的时候出现问题.后面我会贴出测试代码.1)FileLogWorker/// <summary> /// 文件日志处理类,利用队列机制,让写日志调用和日志写到文件分离,调用 /// 方将要写的日志和目标文件插入到日志队列中去就返回, /// 然后由内置线程去写到文件里去。这里用了单例模式。 /// </summary> public class File... 阅读全文
关于CLR内存管理一些深层次的讨论[下篇]
2012-01-21 17:32 by java线程例子, 205 阅读, 0 推荐, 收藏, 编辑
摘要:http://www.cnblogs.com/artech/archive/2010/10/20/1857086.html关于CLR内存管理一些深层次的讨论[下篇]《上篇》中我们主要讨论的是程序集(Assembly)和应用程序域(AppDomain)的话题,着重介绍了两个不同的程序集加载方式——独占方式和共享方式(中立域方式);以及基于进程范围内的字符串驻留。这篇将关注点放在托管对象创建时内存的分配和对大对象(LO:Large Object)的回收上,不对之处,还望各位能够及时指出。目录 一、从类型(Type)与实例(Instance)谈起 二、实例内存分配不仅限于GC堆 三、实例对类型的引用 阅读全文
程序集与应用程序域关系讲解(1)
2012-01-21 17:30 by java线程例子, 350 阅读, 1 推荐, 收藏, 编辑
摘要:关于CLR内存管理一些深层次的讨论[上篇]半年之前,PM让我在部门内部进行一次关于“内存泄露”的专题分享,我为此准备了一份PPT。今天无意中将其翻出来,觉得里面提到的关于CLR下关于内存管理部分的内存还有点意思。为此,今天按照PPT的内容写了一篇文章。本篇文章不会在讨论那些我们熟悉的话题,比如“值类型引用类型具有怎样的区别?”、“垃圾回收分为几个步骤?”、“Finalizer和Dispose有何不同”、等等,而是讨论一些不同的内容。整篇文章分上下两篇,上篇主要谈论的是“程序集(Assembly)和应用程序域(AppDomain)”。也许有的地方说的不是很正确,希望读者不吝赐教。一、程序集与应用 阅读全文
一些C#面试题(无聊之举)
2012-01-21 16:31 by java线程例子, 319 阅读, 0 推荐, 收藏, 编辑
摘要:既然无聊,又不能浪费时间,那就做点无聊的事情打发时间:1.Thread和Process之间有什么区别?.NET新引入了Application Domain的概念,这样他们三个之间有什么区别?引入了Application Domain会带来一些潜在的问题么? 进程是程序的组织形式,线程是系统调度的基本单元,一个进程至少包含一个以上的线程,线程存在于进程内; 应用程序域是为了像IIS这类程序提供的一种进程内隔离方法,便于在一个进程内运行多个应用。进程>应用程序域>线程.对于像IIS这样的应用程序而言,它可以运行多个应用程序,如果一个应用崩溃,整个程序都崩溃是有问题的,所以引入应用程序域 阅读全文
《java编程思想》之控制对成员的访问权限的原因、final、继承和组合、私有方法的“覆盖”
2012-01-21 16:07 by java线程例子, 291 阅读, 0 推荐, 收藏, 编辑
摘要:控制对成员的访问权限有两个原因: 第一是为了使用户不要碰触那些他们不该碰触的部分,这些部分对于类内部的操作是必要的,但是它井不属于客户端程序员所需接口的一部分。因此,将方法和域指定成private,对客户端程序员而言是一种服务。因为这样他们可以很清楚地看到什么对他们重要,什么是他们可以忽略的。这样简化了他们对类的理解。 第二个原因,也是最重要的原因,是为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大的影响。例如,最初可能会以某种方式创建一个类,然后发现如果更改程序结构,可以大大提高运行速度。 如果接口和实现可以被明确地隔离和加以保护,那么就可以实现这一目的... 阅读全文