上善若水
In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 146,comments - 147,trackbacks - 0
<
2011年7月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
(157)
Architecture(7)
Cassandra
CodeTools(5)
Core Java(22)
Database(3)
EHCache(6)
GC(4)
GemFire(3)
Guava(2)
Hadoop(4)
HBase(9)
Jetty(19)
JUnit(6)
Linux(5)
Logging(11)
MultiThreading(8)
Netty(2)
Protobuf(3)
Spring(2)
学习积累(6)
收藏(12)
深入JVM(9)
深入源码(2)
经验积累(6)
金融知识(1)
随笔档案
(125)
2015年11月 (1)
2015年9月 (5)
2015年8月 (7)
2015年7月 (1)
2015年4月 (6)
2015年2月 (1)
2015年1月 (1)
2014年12月 (2)
2014年7月 (3)
2014年6月 (2)
2014年5月 (15)
2014年4月 (2)
2014年3月 (5)
2013年12月 (2)
2013年11月 (3)
2013年10月 (8)
2012年12月 (2)
2012年11月 (13)
2012年9月 (1)
2012年7月 (6)
2012年6月 (2)
2012年5月 (6)
2012年4月 (1)
2012年2月 (1)
2011年12月 (2)
2011年11月 (3)
2011年9月 (10)
2011年8月 (1)
2011年7月 (6)
2011年6月 (7)
收藏夹
(13)
DataBase(7)
Financial
Tools(6)
Java GC
GC - Jon Masamitsu @Oracle
GC - Poonam @Oracle
GC/Arch - Alexey Ragozin
Hotspot John Rose @Oracle
itcamel
Java General
Concurrent - xylz
ImportNew
landon
NoSQL
Carol McDonald @MapR
HBASE HADOOP INSTRUCTOR
Tech General
Learning Library @Oracle
Tech resource from Oracle
Quasar
王垠
Tech Master
Doug Lea @State University of New York
concurrent package author
Leslie Lamport
Distributed System, PAXOS author
MySQL-Performance
MySQL/MongoDB/MariaDB
Welsh, Matt @ Harvard
SEDA
董的博客-大数据相关
董的博客-大数据相关
最新随笔
1. 使用NamedParameterJdbcTemplate遇到无法使用的坑
2. SSTable详解
3. [转]高性能IO模型浅析
4. Netty3架构解析
5. Intercepting Filter模式详解
6. Reactor模式详解
7. 深入HBase架构解析(二)
8. 深入HBase架构解析(一)
9. Log4J引起的程序“装死”
10. 实现自己的Lock对象
搜索
积分与排名
积分 - 892162
排名 - 42
最新评论
1. re: 深入源码之SLF4J
评论内容较长,点击标题查看
--Rookie
2. re: Reactor模式详解
netty的Selector.select是使用系统的select实现的么?这个好像不大好,印象中好像是用epoll实现的?
--戈风
3. re: 【转】关于AccessController.doPrivileged
其实具体什么情况下需要用到AccessController.doPrivileged,平常业务代码基本不会用到,难道是在写框架的时候需要用到?什么类型的框架和场景?
--Kingson
4. re: 使用XStream序列化、反序列化XML数据时遇到的各种问题
继承上,子类对象 在toxml时, XStream只将子类的属性转xml了, 父类的属性没转换xml为何呢?
--MR熊
5. re: 深入Jetty源码之SecurityHandler
我想问一下,你这个有没有样例可以参考一下,我刚入jetty不久,对于这个LoginService的配置不是很熟悉,可以介绍一下,邮箱1204219804@qq.com
--小zhao
阅读排行榜
1. Reactor模式详解(112196)
2. 深入HBase架构解析(一)(60683)
3. Java Cache系列之Guava Cache实现详解(25379)
4. 使用XStream序列化、反序列化XML数据时遇到的各种问题(24994)
5. 深入Log4J源码之Log4J Core(23911)
评论排行榜
1. equals方法实现小记(10)
2. 深入JUnit源码之Runner(8)
3. [多问几个为什么]为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?(8)
4. 深入Log4J源码之Log4J Core(5)
5. finally知多少(5)
StopWatch类
1
/** */
/**
2
* 在C#中提供了一个专门用于简单测试运行时间的类StopWatch,
3
* 但是貌似JDK中并没有提供这样的类,既然没有提供,那么自己动手丰衣足食了。
4
* 参考网上代码,简单写了一个。
5
*
6
* 后来查了以下,貌似commons-lang中已经提供了一个StopWatch的类了,
7
* 而且那个类的功能写的更完善一些,这个类就当是一个学习的渐进过程了。
8
*
9
*
@author
levin
10
*
@since
2011-07-07
11
*/
12
public
class
StopWatch
{
13
private
long
startTime;
14
private
long
endTime;
15
private
boolean
isRunning;
16
17
/** */
/**
18
* 构造{
@link
#StopWatch}实例,清除所有状态
19
*/
20
public
StopWatch()
{
21
reset();
22
}
23
24
/** */
/**
25
* 调用{
@link
#start()}以开始计时,调用该方法时,确保{
@link
#StopWatch}是没有处于运行状态,
26
* 即{
@link
#start()}方法还未调用,或已经调用了{
@link
#stop()}方法。否则会抛{
@link
#IllegalStateException}
27
*
28
*
@return
{
@link
#StopWatch}
29
*
@since
2011-07-07
30
*/
31
public
StopWatch start()
{
32
if
(isRunning)
{
33
throw
new
IllegalStateException(
"
StopWath is already started
"
);
34
}
35
36
startTime
=
System.currentTimeMillis();
37
endTime
=
-
1
;
38
isRunning
=
true
;
39
40
return
this
;
41
}
42
43
/** */
/**
44
* 调用{
@link
#stop()}方法以停止计时,调用该方法时,确保{
@link
#StopWatch}已经处于运行状态,
45
* 即已经调用{
@link
#start()}方法,否则会抛{
@link
#IllegalStateException}。
46
* 调用该方法后,即可以使用{
@link
#getRunningTime()}、{
@link
#getRunningSecs()}方法以获取运行时间
47
*
48
*
@return
{
@link
#StopWatch}
49
*
@since
2011-07-07
50
*/
51
public
StopWatch stop()
{
52
if
(isRunning)
{
53
throw
new
IllegalStateException(
"
StopWatch hasn't been started yet
"
);
54
}
55
56
endTime
=
System.currentTimeMillis();
57
isRunning
=
false
;
58
59
return
this
;
60
}
61
62
/** */
/**
63
* 获取{
@link
#StopWatch}的运行时间,以毫秒为单位。如果还未调用{
@link
#stop()}方法,则返回当前时间
64
* 和开始时间毫秒差;否则返回{
@link
#StopWatch}的Watch时间。
65
*
66
*
@return
获取{
@link
#StopWatch}的运行时间,以毫秒为单位
67
*
@since
2011-07-07
68
*/
69
public
long
getElapsed()
{
70
if
(isRunning)
{
71
return
System.currentTimeMillis()
-
startTime;
72
}
else
{
73
return
endTime
-
startTime;
74
}
75
}
76
77
/** */
/**
78
* 获取{
@link
#StopWatch}的运行时间,以秒为单位。其他和{
@link
#getElapsed()}方法类似。
79
*
80
*
@return
获取{
@link
#StopWatch}的运行时间,以秒为单位
81
*
@since
2011-07-07
82
*/
83
public
long
getElapsedSecs()
{
84
return
TimeUnit.MILLISECONDS.toSeconds(getElapsed());
85
}
86
87
/** */
/**
88
* 获取{
@link
#StopWatch}的运行时间,即调用{
@link
#start()}到调用{
@link
#stop()}的时间间隔,以毫秒为单位。
89
* 若调用此方法时,还未调用{
@link
#stop()}方法,则抛{
@link
#IllegalStateException}。
90
* 若在调用{
@link
#start()}方法前调用该方法,则返回0
91
*
92
*
@return
获取{
@link
#StopWatch}的运行时间,即调用{
@link
#start()}到调用{
@link
#stop()}的时间间隔,以毫秒为单位
93
*
@since
2011-07-07
94
*/
95
public
long
getRunningTime()
{
96
if
(isRunning)
{
97
throw
new
IllegalStateException(
"
StopWatch hasn't been stopped yet
"
);
98
}
99
100
return
endTime
-
startTime;
101
}
102
103
/** */
/**
104
* 获取{
@link
#StopWatch}的运行时间,以秒为单位。其他参考{
@link
#getRunningTime()}方法。
105
*
106
*
@return
获取{
@link
#StopWatch}的运行时间,以秒为单位
107
*
@since
2011-07-07
108
*/
109
public
long
getRunningSecs()
{
110
return
TimeUnit.MILLISECONDS.toSeconds(getRunningTime());
111
}
112
113
114
/** */
/**
115
* 清除当前所有状态
116
* 返回{
@link
#StopWatch}而不是void,是为了能实用方法链的模式
117
*
118
*
@return
{
@link
#StopWatch}
119
*
@since
2011-07-07
120
*/
121
public
StopWatch reset()
{
122
startTime
=
-
1
;
123
endTime
=
-
1
;
124
isRunning
=
false
;
125
126
return
this
;
127
}
128
}
posted on 2011-07-08 11:05
DLevin
阅读(922)
评论(0)
编辑
收藏
所属分类:
CodeTools
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
实现自己的Lock对象
ReferenceCountSet无锁实现
Java Cache系列之Cache概述和Simple Cache
Map deserialize from String
StopWatch类