JAVA中 如何使用延迟?
比如执行一系列的语句,想在某个语句执行之前程序暂停0.5秒。(比如绘图时就可做出动画效果)请问因该是用什么函数?但是不想用这个Sleep,这样中途会无法终止程序,只能在W...
比如执行一系列的语句,想在某个语句执行之前 程序暂停0.5秒。
(比如绘图时就可做出动画效果)
请问因该是用什么函数?
但是不想用这个Sleep,这样中途会无法终止程序,只能在Windows里强制结束.
new Thread(new Runnable() {
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}.start();
用这个的话,start() 前面的大括号} 总是有错误 展开
(比如绘图时就可做出动画效果)
请问因该是用什么函数?
但是不想用这个Sleep,这样中途会无法终止程序,只能在Windows里强制结束.
new Thread(new Runnable() {
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}.start();
用这个的话,start() 前面的大括号} 总是有错误 展开
5个回答
展开全部
Java中主要有两种方法来实现延迟,即:Thread和Timer
1、普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如
try
{
Thread.currentThread().sleep(1000);//毫秒
}
catch(Exception e){}
在这里需要解释一下线程沉睡的迅悄时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。
2、但是如果要使用精确延橡昌握时,最好使用Timer类:
Timer timer=new Timer();//实例化Timer类
timer.schedule(new TimerTask(){
public void run(){
System.out.println("退出");
this.cancel();}},500);//五百毫秒
这种延时比sleep精确。上述延时方法只运行一次,如果需梁庆要运行多次, 使用timer.schedule(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()
1、普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如
try
{
Thread.currentThread().sleep(1000);//毫秒
}
catch(Exception e){}
在这里需要解释一下线程沉睡的迅悄时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。
2、但是如果要使用精确延橡昌握时,最好使用Timer类:
Timer timer=new Timer();//实例化Timer类
timer.schedule(new TimerTask(){
public void run(){
System.out.println("退出");
this.cancel();}},500);//五百毫秒
这种延时比sleep精确。上述延时方法只运行一次,如果需梁庆要运行多次, 使用timer.schedule(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()
2019-09-16 · 让每一名学员高薪就业
四川源码时代科技有限公司
源码时代IT培训,即成都源代码教育咨询有限公司,专注Java、PHP、UI设计、H5前端培训,源码时代致力于打造中国高端IT培训品牌,旨在为每一名前来培训的学子提供良好的服务。
向TA提问
关注
展开全部
JAVA中使用延迟主要有以下两种方法:核旦
1、使用Timer类
Timer类的schedule方法可以按照时间计划执行程序。
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask timerTask = new MyTimerTask();
timer.schedule(timerTask, 10000, 10000);
}
schedule方法中需要传入一个TimerTask类型的对象,该对象需要继承并实现TimerTask类的run方法,或者以匿名内部类的方式实现run方法。schedule的第二个参数为程序第一次执行run方法的延时时间,第三个参数为执行完第一次run方法后延时循环执行run方法的时间。例如,上面的程序就是延码轿时10s执行timerTask的run方法,执行完毕之后每隔10s执行一次run方法。
实现了run方法后就会根据schedule设置的时间计划来执行。schedule的参数也可以不要循环时间,只延时执改模扰行一次,还有多种重载的schedule方法,可以根据实际情况使用。
2、使用Thread
Thread.currentThread().sleep(10000);
使线程暂停一段时间。
1、使用Timer类
Timer类的schedule方法可以按照时间计划执行程序。
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask timerTask = new MyTimerTask();
timer.schedule(timerTask, 10000, 10000);
}
schedule方法中需要传入一个TimerTask类型的对象,该对象需要继承并实现TimerTask类的run方法,或者以匿名内部类的方式实现run方法。schedule的第二个参数为程序第一次执行run方法的延时时间,第三个参数为执行完第一次run方法后延时循环执行run方法的时间。例如,上面的程序就是延码轿时10s执行timerTask的run方法,执行完毕之后每隔10s执行一次run方法。
实现了run方法后就会根据schedule设置的时间计划来执行。schedule的参数也可以不要循环时间,只延时执改模扰行一次,还有多种重载的schedule方法,可以根据实际情况使用。
2、使用Thread
Thread.currentThread().sleep(10000);
使线程暂停一段时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new Thread(new Runnable() {
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}).start();
这样就没错误了。
要用延迟的话,不妨试试java.util.Timer().
new java.util.Timer().schedule(new TimerTask(){
public void run() {
//戚返这歼历里写延迟后要运行的代码
repaint();
//如果只要这个延迟一次,用cancel方法取消掉.
this.cancel();
}}, 3000);
//参考参考java帮助文挡,也可以以固定间隔高改饥连续执行.
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}).start();
这样就没错误了。
要用延迟的话,不妨试试java.util.Timer().
new java.util.Timer().schedule(new TimerTask(){
public void run() {
//戚返这歼历里写延迟后要运行的代码
repaint();
//如果只要这个延迟一次,用cancel方法取消掉.
this.cancel();
}}, 3000);
//参考参考java帮助文挡,也可以以固定间隔高改饥连续执行.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Thread就不会慎滚iu无法终止毁扮
new Thread(new Runnable() {
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}.start();
或者用纤孝灶现成的
javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener() {
public void actionPerformed(ActionEvent e) {
repaint();
}
};
timer.start();
new Thread(new Runnable() {
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}.start();
或者用纤孝灶现成的
javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener() {
public void actionPerformed(ActionEvent e) {
repaint();
}
};
timer.start();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Thread.sleep(0.5 * 1000);
暂停0.5秒
暂停0.5秒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询