Java程序计时

本文介绍了一种使用Java来计算两个时间点之间差值的方法。通过记录两个不同的System.currentTimeMillis()值,然后相减得到时间间隔,并将结果打印出来。

做个笔记:

long time1=System.currentTimeMillis();
long time2=System.currentTimeMillis();
long interval=time2-time1;
System.out.println(interval);

Over!!!
Java程序中实现计时的方法有多种,以下为几种常见方法: - **使用`System.nanoTime()`方法**:可以实现精确计时,精度达到纳秒级别。以下是一个示例代码,定义了`Timer`类用于计时,`start`方法记录开始时间,`stop`方法记录结束时间,`getElapsedTime`方法计算并返回经过的时间: ```java public class Timer { private long startTime; private long endTime; public void start() { startTime = System.nanoTime(); } public void stop() { endTime = System.nanoTime(); } public long getElapsedTime() { return endTime - startTime; } } public class Main { public static void main(String[] args) { Timer timer = new Timer(); timer.start(); // 执行需要计时的代码 timer.stop(); long elapsedTime = timer.getElapsedTime(); System.out.printf("Elapsed time: %d ns\n", elapsedTime); } } ``` 需要注意,计时器的精度会受到系统资源的影响,不同系统可能存在差异[^1]。 - **使用`Date`类**:通过获取当前时间的毫秒数来计算程序运行时间。示例代码如下: ```java long startTime = new Date().getTime(); // 执行需要计时的代码 long endTime = new Date().getTime(); System.out.println("本程序运行 " + (endTime - startTime) + " 毫秒完成。"); ``` 此方法以毫秒为单位计算时间[^5]。 - **基于线程和`Thread.sleep()`实现倒计时**:以下代码通过`Thread.sleep(1000)`实现每秒输出一次当前时间,模拟倒计时效果: ```java import java.text.SimpleDateFormat; import java.util.Date; public class Countdown { public static void main(String[] args) { Date startTime = new Date(System.currentTimeMillis()); while (true) { try { Thread.sleep(1000); System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime)); startTime = new Date(System.currentTimeMillis()); } catch (InterruptedException e) { e.printStackTrace(); } } } } ``` 该方法每秒更新并输出当前时间,可用于需要每秒更新显示的计时场景[^3]。 - **使用`Thread`和`JFrame`实现可视化计时**:以下代码创建了一个`JFrame`窗口,每秒更新显示一次当前时间: ```java package org.tarena.day03; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.swing.JFrame; import javax.swing.JLabel; public class Test01 extends Thread { JFrame jf = new JFrame("计时"); JLabel jl = new JLabel(); Test01() { jf.add(jl); jf.setSize(400, 300); jf.setTitle("计时器"); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void run() { int i = 1; String date; while (i > 0) { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()); jl.setText(date); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } if (i > 100) { i = 1; } i++; } } public static void main(String[] args) { new Test01().start(); } } ``` 此方法适用于需要在图形界面中显示计时的场景[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值