时间单位换算

1s=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒)=10^12ps(皮秒)=10^15fs(飞秒)=10^18as(阿秒)=10^21zm(仄秒)=10^24ym(幺秒)


currentTimeMillisnanoTime是java.lang.System中提供的提供的两个方法。


1、public static long currentTimeMillis();

返回当前时间与1970.1.1 UTC 零点之间的时间差,以毫秒为单位。

调用:System.currentTimeMillis();

注意:当返回值的时间单位是毫秒时,值的粒度取决于底层操作系统,并且粒度可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

好处:可与Date很方便的进行转换。

public class MainClass {
public static void main(String[] args) {
long l1 = System.currentTimeMillis();
System.out.println(l1);//
Date d = new Date(l1);
System.out.println(d);// Wed Nov 30 15:17:42 CST 2016
long l2 = d.getTime();
System.out.println(l2);//
}
}

缺点:在CPU速度越来越快的今天,1毫秒已经成了一个相对较长的时间段,用它来测量代码执行的时间时,结果可能不是很理想。

Date的源代码中有构造器:

    public Date() {
this(System.currentTimeMillis());
}

可知new Date()其实就是在调用System.currentTimeMillis(),且Date类中getTime()方法间接返回的就是System.currentTimeMillis()的值。

2、public static long  nanoTime();

在JDK5中增加的方法,返回系统计时器的当前值,以纳秒为单位;精确度是currentTimeMillis()的10^6倍

调用:System.nanoTime();

注意:此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。nanoTime不能用来计算当前时间。

计算代码执行时间代码:

long s = System.nanoTime();
....
System.out.println(System.nanoTime() - s);

 

currentTimeMillis与 nanoTime的更多相关文章

  1. JVM源码分析之System.currentTimeMillis及nanoTime原理详解

    JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常奇怪,于是自己也在本地mac机器上马上测试了一 ...

  2. Java多线程编程核心技术---线程间通信(一)

    线程是操作系统中独立的个体,但这些个体如果不经过特殊处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一.线程间通信可以使系统之间的交互性更强大,在大大提高CPU利用率的同时还会使程序员对各 ...

  3. Netty5.x中新增和值得注意的点

    最近事情多,OneCoder折腾了好几天,总算翻译完成了. 翻译自官方文档:http://netty.io/wiki/new-and-noteworthy-in-5.x.html   该文档会列出在N ...

  4. 史上最全的 Java 新手问题汇总

    史上最全的 Java 新手问题汇总   Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在. 有超过30亿 ...

  5. java日期详解

    [TOC] 一.简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的地位比如joda. 文章主要对java日期处理的详解,用1.8可以不用joda. 1. 相关概念 首先 ...

  6. Java高级篇(一)——线程

    前面我们系统的了解了Java的基础知识,本篇开始将进入到Java更深层次的介绍,我们先来介绍一下Java中的一个重要的概念--线程. 一.什么是线程 在了解线程前,我们首先要了解进程的概念.进程是操作 ...

  7. java.lang.system 类源码解读

    通过每块代码进行源码解读,并发现源码使用的技术栈,扩展视野. registerNatives 方法解读 /* register the natives via the static initializ ...

  8. Unix时间转LInux时间

    private static long getTime() { long currentTimeMillis = System.currentTimeMillis(); long nanoTime = ...

  9. System类与Runtime类

    PS: Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能.java提供了System类与Runtime类来与程序的运行平台进行交互. System类: 1 ...

随机推荐

  1. flask使用tablib导出excel数据表

    在网页中常常有导出数据的需求,尤其是一下管理类平台.在flask中要导出excel数据表,通常可以使用xlwt库,创建文件并逐行写入数据,但是使用起来总是感觉很麻烦.tablib库相对操作更加方便. ...

  2. PAT(B)1003 我要通过!(Java)

    1003 我要通过! 题目   判断字符串是否符合给定的规则.更多内容点击标题. 参考博客 ValarMorghulis的博客 分析   规律:num_a * num_b = num_c.字符串a中字 ...

  3. element-ui获取用户选中项

    <el-table :data="tableData" stripe border style="width: 100%" @selection-chan ...

  4. [Lua性能] 小试验一例

    local s1 = os.clock() local list1 = {} , do list1[#list1 + ] = end local e1 = os.clock() print(" ...

  5. 远程调用cmd更新本地jar

    最近遇到一个项目需求需要实现远程更新,但是本地项目无法更新自己,这让博主很是头疼,既然自己无法更新自己的话,那就自建新的项目,通过本地项目来调用新项目接口来更新本地项目. 代码如下: /** * 重启 ...

  6. swith-case 日历

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 记录在苹果X手机上运行遇到的代码Dom被阻塞不更新的一个坑

    一.问题产生背景: 开发支付功能,代码逻辑如下:点击支付后,请求后台接口得到流水号以及第三方支付台链接,跳转支付台(在苹果手机则是弹出支付台层):支付完毕后返回支付页面,或中途退出支付台返回支付页面: ...

  8. Computer Vision_18_Image Stitching:Automatic Panoramic Image Stitching using Invariant Features——2007

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  9. 09 Windows编程——键盘消息

    焦点窗口:接收到这个键盘事件的窗口称为有输入焦点的窗口.具有输入焦点的窗口要么是活动窗口,要么是活动窗口的子孙窗口. 活动窗口:活动窗口通常是很好鉴别的.它总是最上层的窗口——也就是说,它的父窗口句柄 ...

  10. 排序算法(冒泡、选择)-python代码展示

    冒泡排序: def bubble_sort(list): for i in range(len(list) - 1): # 这个循环负责设置冒泡排序进行的次数 for j in range(len(l ...