「java毫秒计时器」java纳秒计时器

博主:adminadmin 2022-11-22 07:23:08 57

本篇文章给大家谈谈java毫秒计时器,以及java纳秒计时器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用java实现一个计时器?

用java实现一个计时器的方法:

public class TestDingShi implements Runnable

{

Thread xc;

Dao dao=new DaoImpl();

public TestDingShi()

{

xc=new Thread(this);//线程开启

xc.start();

}

public void run()

{

while (true)

{

try

{

xc.sleep(1000);//睡眠开始计时

}

catch (InterruptedException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

//TODO定时在此

}

}

}

java 毫秒倒计时器 想编写一个方法,其中就有一个参数 倒计时多长时间

import java.awt.BorderLayout;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.SwingConstants;

public class NanoTimeframe extends JPanel

{

private static final long serialVersionUID = -6135068834705503622L;

private JLabel lblTime;

private long start = 0L; // 从0毫秒开始

private static long MAXTIME = 5000L; // 5秒后结束

private boolean begin = false;

private JTextField setTime;

public NanoTimeframe()

{

this.lblTime = new JLabel("单击开始");

this.setTime = new JTextField();

System.out.println("1");

this.lblTime.setFont(new Font("Monospaced", Font.BOLD, 60));

this.lblTime.setHorizontalAlignment(SwingConstants.CENTER);

this.lblTime.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e)

{

MAXTIME = Long.parseLong(setTime.getText());

begin = true;

lblTime.setText(timeStr(start));

}

});

setLayout(new BorderLayout());

add(lblTime, BorderLayout.CENTER);

add(setTime, BorderLayout.NORTH);

}

private String timeStr(long time)

{

StringBuffer timeBuffer = new StringBuffer();

long miu = time / (60 * 1000);

time -= miu * 60 * 1000;

long se = time / 1000;

time -= se * 1000;

long mi = time % 1000;

timeBuffer.append(miu 10 ? ("0" + miu) : miu);

timeBuffer.append(".");

timeBuffer.append(se 10 ? ("0" + se) : se);

timeBuffer.append(".");

timeBuffer.append(mi 10 ? ("00" + mi) : (mi 100 ? ("0" + mi) : mi));

return timeBuffer.toString();

}

@Override

public void paintComponent(Graphics page)

{

if (!begin) return;

super.paintComponent(page);

if (start = MAXTIME)

{

lblTime.setText("Bomb!!!");

return;

}

start += 1;

lblTime.setText(timeStr(start));

}

public static void main(String [] args){

JFrame jf = new JFrame();

jf.setResizable(false);

jf.setBounds(0, 0, 460, 330);

jf.setLocationRelativeTo(null);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.add(new NanoTimeframe());

jf.setVisible(true);

}

}

请给分 改得辛苦上面输入毫秒后计时

「java毫秒计时器」java纳秒计时器

java里,想找一个计时函数,能够精确到毫秒,用来计算某一段代码的运行时间。请高手帮忙。

// 系统时间

long sysDate = System.currentTimeMillis();

这个绝对精确,是到毫秒,自1970年1月1日0时起的毫秒数。

在你那段代码最前面取一个时间,在最后取一个时间,两个一减,就是运行时间了。。

在Java中如何实现较为精确的定时器

大部分人在遇到需要使用定时任务的时候首先会想到Timer类,

不过在JDK5.0之后就不建议使用这个Timer了,因为它有很多的缺陷。

在新的java.util.concurrent包中的ScheduledExecutorService可以替代这个Timer:

使用方法举例:

Java代码

ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);

exec.scheduleAtFixedRate(new Runnable() {

public void run() {

try{

throw new RuntimeException();

}catch (Exception e){

System.out.println("RuntimeException catched");

}

}

}, 1000, 5000, TimeUnit.MILLISECONDS);

java计时器该怎么写

闲的D疼,给你写了个,能满足你的需求 觉得可以的话 加点分呗 嘿嘿

开始没注意 确实不准 现在基本上OK了 因为你要精确到0.01秒,所以只能这样了 总会有点点误差的

Thread.sleep(9); 的意思是 每隔9毫秒循环一次,但是每循环一次都有语句需要执行,而语句执行是需要时间的,所以就有了误差。 因为这个方法里面只能传long型数据,不能传小数,就导致了不准 估计要准的话 是9.几 呵呵

你可以自己稍微改下代码,让循环里面的语句变少,这样的话会准些

package test;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class TestCounter implements Runnable, ActionListener {

private JLabel counter;

private int hour = 0, min = 0, ss = 0, mm = 0;

private String h, m, s, mmm;

private Thread tt;

private int status = 0;

public TestCounter() {

JFrame main = new JFrame("我的计时器");

main.setLayout(new BorderLayout());

JPanel buttons = new JPanel();

JButton start = new JButton("start");

JButton end = new JButton("end");

JButton clear = new JButton("clear");

start.addActionListener(this);

end.addActionListener(this);

clear.addActionListener(this);

buttons.add(start);

buttons.add(end);

buttons.add(clear);

JPanel view = new JPanel();

counter = new JLabel("00:00:00-00");

view.add(counter);

main.add(buttons, BorderLayout.NORTH);

main.add(view);

main.pack();

main.setLocation(300, 300);

main.setVisible(true);

main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override

public void run() {

for (;;) {

if (status == 1) {

mm++;

if (mm 99) {

mm = 0;

ss++;

}

if (ss 59) {

ss = 0;

min++;

}

if (min 59) {

min = 0;

hour++;

}

h = hour + "";

m = min + "";

s = ss + "";

mmm = mm + "";

if (mm = 9) {

mmm = "0" + mm;

}

if (ss = 9) {

s = "0" + ss;

}

if (min = 9) {

m = "0" + min;

}

if (hour = 9) {

h = "0" + hour;

}

counter.setText(h + ":" + m + ":" + s + "-" + mmm);

}

try {

Thread.sleep(9);

} catch (Exception e) {

}

}

}

@Override

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

if ("start".endsWith(str)) {

status = 1;

if (tt == null) {

tt = new Thread(this);

tt.start();

}

} else if ("end".endsWith(str)) {

status = 0;

} else if ("clear".endsWith(str)) {

hour = 0;

min = 0;

ss = 0;

mm = 0;

counter.setText("00:00:00-00");

}

}

public static void main(String[] args) {

new TestCounter();

}

}

Java 秒表

package demo;

import javax.swing.*;

import java.awt.HeadlessException;

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class Timer extends JFrame {

private static final long serialVersionUID = 1L;

private static final String INITIAL_LABEL_TEXT = "00:00:00 000";

// 计数线程

private CountingThread thread = new CountingThread();

// 记录程序开始时间

private long programStart = System.currentTimeMillis();

// 程序一开始就是暂停的

private long pauseStart = programStart;

// 程序暂停的总时间

private long pauseCount = 0;

private JLabel label = new JLabel(INITIAL_LABEL_TEXT);

private JButton startPauseButton = new JButton("开始");

private JButton resetButton = new JButton("清零");

private ActionListener startPauseButtonListener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (thread.stopped) {

pauseCount += (System.currentTimeMillis() - pauseStart);

thread.stopped = false;

startPauseButton.setText("暂停");

} else {

pauseStart = System.currentTimeMillis();

thread.stopped = true;

startPauseButton.setText("继续");

}

}

};

private ActionListener resetButtonListener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

pauseStart = programStart;

pauseCount = 0;

thread.stopped = true;

label.setText(INITIAL_LABEL_TEXT);

startPauseButton.setText("开始");

}

};

public Timer(String title) throws HeadlessException {

super(title);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLocation(300, 300);

setResizable(false);

setupBorder();

setupLabel();

setupButtonsPanel();

startPauseButton.addActionListener(startPauseButtonListener);

resetButton.addActionListener(resetButtonListener);

thread.start(); // 计数线程一直就运行着

}

// 为窗体面板添加边框

private void setupBorder() {

JPanel contentPane = new JPanel(new BorderLayout());

contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

this.setContentPane(contentPane);

}

// 配置按钮

private void setupButtonsPanel() {

JPanel panel = new JPanel(new FlowLayout());

panel.add(startPauseButton);

panel.add(resetButton);

add(panel, BorderLayout.SOUTH);

}

// 配置标签

private void setupLabel() {

label.setHorizontalAlignment(SwingConstants.CENTER);

label.setFont(new Font(label.getFont().getName(), label.getFont().getStyle(), 40));

this.add(label, BorderLayout.CENTER);

}

// 程序入口

public static void main(String[] args) {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (Exception e) {

e.printStackTrace();

}

Timer frame = new Timer("计时器");

frame.pack();

frame.setVisible(true);

}

private class CountingThread extends Thread {

public boolean stopped = true;

private CountingThread() {

setDaemon(true);

}

@Override

public void run() {

while (true) {

if (!stopped) {

long elapsed = System.currentTimeMillis() - programStart - pauseCount;

label.setText(format(elapsed));

}

try {

sleep(1); // 1毫秒更新一次显示

} catch (InterruptedException e) {

e.printStackTrace();

System.exit(1);

}

}

}

// 将毫秒数格式化

private String format(long elapsed) {

int hour, minute, second, milli;

milli = (int) (elapsed % 1000);

elapsed = elapsed / 1000;

second = (int) (elapsed % 60);

elapsed = elapsed / 60;

minute = (int) (elapsed % 60);

elapsed = elapsed / 60;

hour = (int) (elapsed % 60);

return String.format("%02d:%02d:%02d %03d", hour, minute, second, milli);

}

}

}

你可以试试,希望能帮到你!

java毫秒计时器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java纳秒计时器、java毫秒计时器的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。