「java毫秒计时器」java纳秒计时器
本篇文章给大家谈谈java毫秒计时器,以及java纳秒计时器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java实现一个计时器?
- 2、java 毫秒倒计时器 想编写一个方法,其中就有一个参数 倒计时多长时间
- 3、java里,想找一个计时函数,能够精确到毫秒,用来计算某一段代码的运行时间。请高手帮忙。
- 4、在Java中如何实现较为精确的定时器
- 5、java计时器该怎么写
- 6、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里,想找一个计时函数,能够精确到毫秒,用来计算某一段代码的运行时间。请高手帮忙。
// 系统时间
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毫秒计时器的信息别忘了在本站进行查找喔。
发布于:2022-11-22,除非注明,否则均为
原创文章,转载请注明出处。