计算一个程序的执行时间和定时器

      看HDOJ系统、一些IDE都会带有计算程序的执行时间功能,其实很简单,调用System类中的currentTimeMills()方法,取得开始时间 和 结束时间,做个减法,就OK。

package zz.systemdemo;
public class SystemDemo {
	public static void main(String []args){
		// 取得循环程序前的系统时间
		long startTime = System.currentTimeMillis();

		int sum = 0; // 声明循环用到的累加结果变量
		for (int i = 1; i < 30000000; i++) {
			sum += i;
		}

		// 循环结束后的系统时间 
		long endTime = System.currentTimeMillis();
		System.out.println("程序执行时间为:" + (endTime - startTime) + "毫秒");
	}
}

- ->程序运行结果(在我机器上):
程序执行时间为:61毫秒

程序的结果是不稳定的,而且再次运行,时间会增长,不知道是为什么?可能是前面占用了内存,使机器速度有所减缓。网上查了下,好像还很有内容 ,要深入研究下。
另外注意:System类中的方法都是静态的
想到以前在学单片机时候,老师说用 for() 循环来完成单片机的定时、延时效果是不理想的,这是有道理的。
今天看了下网易的博客,竟然奇迹般打开了(以前好像是很多大学都因为动态IP原因,网易服务器防止攻击而打不开博客),那叫一个鸡动;回顾下以前的知识,温故而知新。

用计时器控制跑马灯的两种方法

实现定时调度:
Timer类是一种线程设施可以用来实现在某一个时间或某一时间段后安排某一个任务执行一次或定期重复执行,该功能要与TimerTask打配合。其中TimerTask类用来实现由Timer安排的任务。
Timer类特点:每一个Timer对象对应一个线程,因此计时器所执行的任务应该迅速完成。否则,

package zz.timertaskdemo;

import java.util.TimerTask;
import java.util.Date;
import java.util.Timer;
import java.text.SimpleDateFormat;

class MyTask extends TimerTask{			// 任务调度类一定要继承TimerTask
	public void run() {
		SimpleDateFormat sdf = null;
		sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss.SSS");
		System.out.println("当前系统时间为:" + sdf.format(new Date()));
	}
}

public class TimerTaskDemo{
	public static void main(String []args){
		Timer t = new Timer();		// 建立Timer类对象
		MyTask mt = new MyTask();	// 定义任务
		t.schedule(mt, 1000, 2000);	// 设置(任务的执行,1秒后开始,每2秒重复)
		//t.scheduleAtFixedRate(mt, 1000, 2000);	// 设置(任务的执行,1秒后开始,每2秒重复)

	}
}

在我机器上的运行结果:
1.用scheduleAtFixedRate()函数
t.scheduleAtFixedRate(mt, 1000, 2000); // 设置(任务的执行,1秒后开始,每2秒重复)

当前系统时间为:2012-07-22 21-08-05.996
当前系统时间为:2012-07-22 21-08-07.951
当前系统时间为:2012-07-22 21-08-09.951
当前系统时间为:2012-07-22 21-08-11.951
当前系统时间为:2012-07-22 21-08-13.951
当前系统时间为:2012-07-22 21-08-15.951
当前系统时间为:2012-07-22 21-08-17.951
当前系统时间为:2012-07-22 21-08-19.951

2.用schedule()函数
t.schedule(mt, 1000, 2000); // 设置(任务的执行,1秒后开始,每2秒重复)

当前系统时间为:2012-07-22 21-11-06.023
当前系统时间为:2012-07-22 21-11-07.977
当前系统时间为:2012-07-22 21-11-09.977
当前系统时间为:2012-07-22 21-11-11.977
当前系统时间为:2012-07-22 21-11-13.977
当前系统时间为:2012-07-22 21-11-15.977
当前系统时间为:2012-07-22 21-11-20.124
当前系统时间为:2012-07-22 21-11-22.124
当前系统时间为:2012-07-22 21-11-24.124
当前系统时间为:2012-07-22 21-11-26.124
当前系统时间为:2012-07-22 21-11-28.124
当前系统时间为:2012-07-22 21-11-31.665
当前系统时间为:2012-07-22 21-11-33.665

两个函数的区别:
schedule()方法的执行时间是固定的,如果之前出现延迟的情况,之后也会继续按照设定好的间隔来执行,死板的老顽固一个。
scheduleAtFixedRate()函数可以根据延迟调整下一次的间隔执行时间,更会灵活变通一下。

推荐文章

【网络爬虫】【java】微博爬虫(一):小试牛刀——网易微博爬虫(自定义关键字爬取微博数据)(附软件源码)

一、写在前面        (本专栏分为“java版微博爬虫”和“python版网络爬虫”两个项目,系列里所有文章将基于这两个项目讲解,项目完整源码已经整理到我的Github,有兴趣的可以去看下,链接地址在文末。)         网络爬虫根据需求的不同也分不同

推荐文章

C中使用正则表达式

C中使用正则表达式大致分为一下几个步骤: 1.编译正则表达式 2.执行匹配 3.释放内存   首先,编译正则表达式 int regcomp(regex_t *preg, const char *regex, int cflags); reqcomp()函数用于把正则表达式编译成某种格式,可以使后面的匹配更有效。 如

推荐文章

3分钟带你了解负载均衡服务

欢迎访问网易云社区,了解更多网易技术产品运营经验。  一个互联网产品在搭建服务时可能经常会遇到以下困境:搭建的单节点 web服务性能和可靠性都无法达到要求,节点挂掉=服务异常;直接使用外网提供服务,经常会担心被人攻破,且公司运维团队水平较低,一不小心就会有打开外网端口的情况。这些场景下如果加入负载均衡服务问题便会迎刃而解。&

推荐文章

6/10

队名:我头发呢队 组长博客 杰(组长) 过去两天完成了哪些任务 继续翻阅Material Design2文档 翻阅网易云的web端网页 愉悦交流 接下来的计划 音源爬取 还剩下哪些任务 app开发 燃尽图 有哪些困难 进度缓慢 有哪些收获和疑问 网页真好玩 跃安

推荐文章

Alpha 冲刺 (6/10)

队名:我头发呢队 组长博客 杰(组长) 过去两天完成了哪些任务 继续翻阅Material Design2文档 翻阅网易云的web端网页 愉悦交流 接下来的计划 音源爬取 还剩下哪些任务 app开发 燃尽图 有哪些困难 进度缓慢 有哪些收获和疑问 网页真好玩 跃安

推荐文章

项目前端打包工具从 NEJ 切换成 webpack

此文已由作者张磊授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 这里不讨论 NEJ 和 webpack 的优劣,仅从技术角度来探寻一下能否实现,以及实现的代价。 前言 上一篇文章 问题有提到 方案1 如何打包的问题,有一种方案就是把打包方案切成 webpack 的。这篇文章就是讲如何实现的。 想法缘由:

推荐文章

appium封装显示等待Wait类和ExpectedCondition接口

此文已由作者夏鹏授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 使用WebDriver做Web自动化的时候,org.openqa.selenium.support.ui中提供了非常便捷好用的WebDriverWait类继承FluentWait<WebDriver>,所以可以使用FluentWait类

推荐文章

web调试利器_fiddler

此文已由作者夏君授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 一、fiddler简介 直接引用官网介绍 The free web debugging proxy for any browser, system or&

推荐文章

JAVA遇见HTML——JSP篇(1、JAVA WEB简介)

    比如淘宝、新浪。搜狐、网易就是Web应用程序                          

推荐文章

四款非常实用的办公软件,个个都很良心

Draw.io Draw.io是一个专业的在线绘图制作平台软件。 用户可以快速、自由的创建简单的图标、流程图、网页模版构架图、框架图等,通过浏览器Chrome插件就可以快速创建想要的效果图,良心好用。   MuMu模拟器 MuMu模拟器是网易推出的手机模拟器软件。 使用它可以玩最近很火的手机版吃鸡游戏,几乎

推荐文章

[神器] AI视频翻译 解决英文视频字幕问题(类似youtube自动生成字幕)

1.网易见外是网易人工智能事业部旗下的AI视频翻译产品. 字幕支持手工编辑和下载 不过网易见外 只支持WEB在线操作 并且只支持单个上传操作 目前没有客户端   2.人人译视界 (IOS 安卓 PC客户端都有)

推荐文章

使用flex进行网易云音乐界面构建和布局解析

1.为什么要用flex进行webapp布局 第一,float布局 需要清除浮动,很麻烦。 第二,绝对定位需要考虑位置和空间占位 第三,元素垂直水平居中问题。 2.网易云音乐首页分析3.啥也别说,直接上代码 先来一个html, <!DOCTYPE html> <html lang="en"> <h

推荐文章

Vim 多行替换

Replace multiple lines in Vim Aim // to replace the following line with new multiple lines // original line "type": "string" // target lines

推荐文章

Linux复习笔记(五) -- vim编辑器基本使用

更详细内容请查看视频教程地址: http://study.163.com/course/courseLearn.htm?courseId=232007#/learn/video?lessonId=340056&courseId=232007 命令vim启动vim编辑器 vim

推荐文章

vim system verilog语法高亮

" Vim syntax file " Language:SystemVerilog " Maintainer:Stephen Hobbs <stephenh@cadence.com> " Last Update:  Wed Jun 14 15:56:00 BST 2006 " Built on verilog.vim f

推荐文章

ctags for systemverilog(vim用)

我们知道 vim+ctags 是编程时很常用的组合工具,但是原本的 ctags 似乎沒有 systemverilog 的支持, 不过我在网上找到国外高手写的systemverilog for ctags的语法支持文件。 通常我们需要以下几步简单设置就可以在sv文件中,调用tags的强大功能了。 1.ctags的用户配置通常保存在用户根目