java启用一个倒计时任务
启用一个连接,把连接存放到一个map中,这个时候没有关闭连接,做一个5秒后关闭连接的机制。(如果调用者在倒计时范围内调用了连接,则重新计数倒计时)目的是判断是否有在调用这...
启用一个连接,把连接存放到一个map中,这个时候没有关闭连接,做一个5秒后关闭连接的机制。(如果调用者在倒计时范围内调用了连接,则重新计数倒计时)目的是判断是否有在调用这个连接,如果没有就关闭。
用java如何创建一个定时器,5秒后打印一句话;(括弧不是每隔5秒,是5秒后执行一次,就执行一次)这时又来一个方法调用这个定时器,如果判断定时器再倒计时范围内中断倒计时重新倒计时,如果定时器没有执行,启用一个5秒后执行的定时器任务 展开
用java如何创建一个定时器,5秒后打印一句话;(括弧不是每隔5秒,是5秒后执行一次,就执行一次)这时又来一个方法调用这个定时器,如果判断定时器再倒计时范围内中断倒计时重新倒计时,如果定时器没有执行,启用一个5秒后执行的定时器任务 展开
展开全部
你看一下这个吧.用线程来检查超时时间.
----------------------------------------------------------------------
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.SwingConstants;
public class DemoApp extends JFrame implements ActionListener, Runnable {
private JTextField textField;
private int seconds = 0;
// 默认超时时间是10秒
private int time = 10;
private JLabel showTime;
private JButton btnStart;
public DemoApp() {
getContentPane().setLayout(null);
JLabel label = new JLabel("设置时间");
label.setBounds(10, 10, 64, 15);
getContentPane().add(label);
textField = new JTextField();
textField.setBounds(84, 7, 35, 21);
getContentPane().add(textField);
textField.setColumns(10);
JLabel label_1 = new JLabel("秒");
label_1.setBounds(129, 10, 25, 15);
getContentPane().add(label_1);
btnStart = new JButton("开始");
btnStart.setBounds(164, 6, 64, 23);
btnStart.addActionListener(this);
btnStart.setActionCommand("S");
getContentPane().add(btnStart);
JLabel label_2 = new JLabel("计时");
label_2.setBounds(10, 38, 54, 15);
getContentPane().add(label_2);
showTime = new JLabel("0");
showTime.setHorizontalAlignment(SwingConstants.RIGHT);
showTime.setBounds(84, 38, 35, 15);
getContentPane().add(showTime);
JButton button = new JButton("模拟使用连接");
button.setBounds(168, 39, 116, 23);
button.addActionListener(this);
button.setActionCommand("M");
getContentPane().add(button);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setSize(300, 150);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new DemoApp();
}
public void actionPerformed(ActionEvent e) {
if ("S".equals(e.getActionCommand())) {
try {
time = Integer.parseInt(textField.getText());
} catch (Exception ex) {
}
new Thread(this).start();
// 按钮不可用。
btnStart.setEnabled(false);
textField.setEditable(false);
}
if ("M".equals(e.getActionCommand())) {
seconds = 0;
}
}
public void run() {
while (true) {
try {
showTime.setText("" + seconds);
// 检查是否超时
if (seconds == time) {
// 超时后可重新设置时间
btnStart.setEnabled(true);
textField.setEditable(true);
break;
}
seconds++;
// 休眠时间设为一秒,如果总的超时时间很长的话,可以多设置一些
// 比如30秒超时,可以设置为5秒一检查
Thread.sleep(1000);
} catch (Exception e) {
}
}
}
}
----------------------------------------------------------------------
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.SwingConstants;
public class DemoApp extends JFrame implements ActionListener, Runnable {
private JTextField textField;
private int seconds = 0;
// 默认超时时间是10秒
private int time = 10;
private JLabel showTime;
private JButton btnStart;
public DemoApp() {
getContentPane().setLayout(null);
JLabel label = new JLabel("设置时间");
label.setBounds(10, 10, 64, 15);
getContentPane().add(label);
textField = new JTextField();
textField.setBounds(84, 7, 35, 21);
getContentPane().add(textField);
textField.setColumns(10);
JLabel label_1 = new JLabel("秒");
label_1.setBounds(129, 10, 25, 15);
getContentPane().add(label_1);
btnStart = new JButton("开始");
btnStart.setBounds(164, 6, 64, 23);
btnStart.addActionListener(this);
btnStart.setActionCommand("S");
getContentPane().add(btnStart);
JLabel label_2 = new JLabel("计时");
label_2.setBounds(10, 38, 54, 15);
getContentPane().add(label_2);
showTime = new JLabel("0");
showTime.setHorizontalAlignment(SwingConstants.RIGHT);
showTime.setBounds(84, 38, 35, 15);
getContentPane().add(showTime);
JButton button = new JButton("模拟使用连接");
button.setBounds(168, 39, 116, 23);
button.addActionListener(this);
button.setActionCommand("M");
getContentPane().add(button);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setSize(300, 150);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new DemoApp();
}
public void actionPerformed(ActionEvent e) {
if ("S".equals(e.getActionCommand())) {
try {
time = Integer.parseInt(textField.getText());
} catch (Exception ex) {
}
new Thread(this).start();
// 按钮不可用。
btnStart.setEnabled(false);
textField.setEditable(false);
}
if ("M".equals(e.getActionCommand())) {
seconds = 0;
}
}
public void run() {
while (true) {
try {
showTime.setText("" + seconds);
// 检查是否超时
if (seconds == time) {
// 超时后可重新设置时间
btnStart.setEnabled(true);
textField.setEditable(true);
break;
}
seconds++;
// 休眠时间设为一秒,如果总的超时时间很长的话,可以多设置一些
// 比如30秒超时,可以设置为5秒一检查
Thread.sleep(1000);
} catch (Exception e) {
}
}
}
}
展开全部
用延时 Thread.sleep、或Timer+TimeTask 简单用法如下,详细的看API
import java.util.Timer;
import java.util.TimerTask;
/**
* Simple demo that uses java.util.Timer to schedule a task to execute once 5 seconds have passed.
*/
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time's up!");
timer.cancel(); //Terminate the timer thread
}
}
public static void main(String args[]) {
new Reminder(5);
System.out.println("Task scheduled.");
}
}
import java.util.Timer;
import java.util.TimerTask;
/**
* Simple demo that uses java.util.Timer to schedule a task to execute once 5 seconds have passed.
*/
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time's up!");
timer.cancel(); //Terminate the timer thread
}
}
public static void main(String args[]) {
new Reminder(5);
System.out.println("Task scheduled.");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询