How to get system time in Java without creating a new Date

前端 未结 4 1656
抹茶落季
抹茶落季 2020-12-28 12:36

I need to get the system date, and Java provides the new Date().getTime().

But I need to avoid new object allocation (I\'m working on a embedded system)

相关标签:
4条回答
  • 2020-12-28 12:54

    Use System.currentTimeMillis() or System.nanoTime().

    0 讨论(0)
  • 2020-12-28 12:58

    You can use System.currentTimeMillis().

    At least in OpenJDK, Date uses this under the covers.

    The call in System is to a native JVM method, so we can't say for sure there's no allocation happening under the covers, though it seems unlikely here.

    0 讨论(0)
  • 2020-12-28 13:01

    As jzd says, you can use System.currentTimeMillis. If you need it in a Date object but don't want to create a new Date object, you can use Date.setTime to reuse an existing Date object. Personally I hate the fact that Date is mutable, but maybe it's useful to you in this particular case. Similarly, Calendar has a setTimeInMillis method.

    If possible though, it would probably be better just to keep it as a long. If you only need a timestamp, effectively, then that would be the best approach.

    0 讨论(0)
  • 2020-12-28 13:03

    This should work:

    System.currentTimeMillis();
    
    0 讨论(0)
提交回复
热议问题