Java中获取时间戳的三种方式对比实现

 更新时间:2021年01月18日 17:04:37   作者:cHAngXdoN  
这篇文章主要介绍了Java中获取时间戳的三种方式对比实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Java中获取时间戳 三种方式对比

最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。

1.System.currentTimeMillis()

System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短。开发中如果设计到效率问题,推荐使用此种方式获取。

System.currentTimeMillis()

2.new Date().getTime()

除了System类,使用量很大的应该就是Date类了,包括我也一样开发中如果涉及到日期的首先会想到Date,但date类中获取时间戳并不是最有效率的,翻看他的源码:
无参构造如下👇

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

从源码可以看出,new Date()其实就是调用了System.currentTimeMillis(),再传入自己的有参构造函数。不难看出,如果只是仅仅获取时间戳,即使是匿名的new Date()对象也会有些许的性能消耗, 从提升性能的角度来看,只是仅仅获取时间戳,不考虑时区的影响(时区为什么会有影响看下一段),直接调用System.currentTimeMillis()会更好一些。

3.Calendar.getInstance().getTimeInMillis()

这种方式其实是速度最慢,看其源码就会发现,Canlendar是区分时区的,因为要处理时区问题会耗费很多的时间。

附测试如下:

import java.util.Calendar; 
import java.util.Date; 
 
public class TimeTest { 
  private static long _TEN_THOUSAND=10000; 
  public static void main(String[] args) { 
    long times=1000*_TEN_THOUSAND; 
    long t1=System.currentTimeMillis(); 
    testSystem(times); 
    long t2=System.currentTimeMillis(); 
    System.out.println(t2-t1); 
    testCalander(times); 
    long t3=System.currentTimeMillis(); 
    System.out.println(t3-t2); 
    testDate(times); 
    long t4=System.currentTimeMillis(); 
    System.out.println(t4-t3); 
  } 
   
  public static void testSystem(long times){//use 188 
    for(int i=0;i<times;i++){ 
      long currentTime=System.currentTimeMillis(); 
    } 
  } 
 
  public static void testCalander(long times){//use 6299 
    for(int i=0;i<times;i++){ 
      long currentTime=Calendar.getInstance().getTimeInMillis(); 
    } 
  } 
   
  public static void testDate(long times){ 
    for(int i=0;i<times;i++){ 
      long currentTime=new Date().getTime(); 
    } 
     
  }  
} 

效果如下

187 
7032 
297

Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,这是因为Canlendar要处理时区问题会耗费较多的时间。

到此这篇关于Java中获取时间戳的三种方式对比实现的文章就介绍到这了,更多相关Java 获取时间戳内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用 mybatis 自定义日期类型转换器的示例代码

    使用 mybatis 自定义日期类型转换器的示例代码

    这篇文章主要介绍了使用 mybatis 自定义日期类型转换器的示例代码,这里使用mybatis中的typeHandlers 实现的,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • Java开发中最让人头疼的十个bug

    Java开发中最让人头疼的十个bug

    这篇文章主要给大家总结介绍了关于Java开发中最让人头疼的十个bug,同样的bug信息,可能背后有千万种原因,而我,永远都不知道到底是哪一个,努力通过代码积累尽可能多的bug,并将它们进行分类,可以帮你debug节省了时间,需要的朋友可以参考下
    2021-10-10
  • java 验证码的生成实现

    java 验证码的生成实现

    这篇文章主要介绍了java 验证码的生成实现的相关资料,需要的朋友可以参考下
    2017-08-08
  • Java线程池Executor用法详解

    Java线程池Executor用法详解

    本文主要为大家详细介绍了Java线程池Executor的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java一致性Hash算法的实现详解

    Java一致性Hash算法的实现详解

    这篇文章主要介绍了Java一致性Hash算法的实现详解,hash的意思是散列,目的将一组输入的数据均匀的分开、打散,往往用来配合路由算法做负载均衡,多用在分布式系统中,需要的朋友可以参考下
    2024-01-01
  • 使用java获取指定链接的网页内容

    使用java获取指定链接的网页内容

    Java提供了许多用于网络通信的库,其中最常用的是HttpURLConnection和HttpClient,本文将使用HttpURLConnection进行爬取指定链接的网页内容,感兴趣的可以了解下
    2023-09-09
  • Java图书管理系统课程设计

    Java图书管理系统课程设计

    这篇文章主要为大家详细介绍了Java图书管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • java解一个比较特殊的数组合并题

    java解一个比较特殊的数组合并题

    这篇文章主要介绍了java解一个比较特殊的数组合并题,需要的朋友可以参考下
    2014-06-06
  • Windows下Java调用OCR进行图片识别

    Windows下Java调用OCR进行图片识别

    这篇文章主要为大家详细介绍了Windows下Java调用OCR进行图片识别,通过Tesseract-OCR对图片进行识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Kafka Java Producer代码实例详解

    Kafka Java Producer代码实例详解

    这篇文章主要介绍了Kafka Java Producer代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论