您的位置:

java延迟,java延迟函数

本文目录一览:

JAVA中 如何使用延迟?

Java中主要有两种方法来实现延迟,即:Thread和Timer\x0d\x0a\x0d\x0a1、普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如\x0d\x0atry \x0d\x0a{ \x0d\x0aThread.currentThread().sleep(1000);//毫秒 \x0d\x0a} \x0d\x0acatch(Exception e){} \x0d\x0a在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。\x0d\x0a\x0d\x0a2、但是如果要使用精确延时,最好使用Timer类:\x0d\x0aTimer timer=new Timer();//实例化Timer类 \x0d\x0atimer.schedule(new TimerTask(){ \x0d\x0apublic void run(){ \x0d\x0aSystem.out.println("退出"); \x0d\x0athis.cancel();}},500);//五百毫秒 \x0d\x0a这种延时比sleep精确。上述延时方法只运行一次,如果需要运行多次, 使用timer.schedule(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()

怎样让“java”延迟函数?

Java中主要有以下方法来实现延迟

普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如

try

{

Thread.currentThread().sleep(1000);//毫秒

}

catch(Exception e){}

在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

java每天只能执行一个任务

一、用java.util.Timer

使用JAVA类Timer可实现简单的延迟和周期性任务,其中的任务使用java.util.TimerTask表示。任务的执行方式有两种:

按固定速率执行:即scheduleAtFixedRate的两个重载方法

Timer timer = newTimer();

timer. scheduleAtFixedRate(newTimerTask() {

@Overridepublic voidrun() {

System.out.println("Timer is running");

}

},2000, 5000);

按固定延迟执行:即schedule的4个重载方法

Timer timer = newTimer();

timer.schedule(newTimerTask() {

@Overridepublic voidrun() {

System.out.println("Timer is running");

}

},2000);

我们要实现一个定时任务,只需要实现TimerTask的run方法即可。每一个任务都有下一次执行时间nextExecutionTime(毫秒),如果是周期性的任务,那么每次执行都会更新这个时间为下一次的执行时间,当nextExecutionTime小于当前时间时,都会执行它。

Timer的缺陷

1、由于执行任务的线程只有一个,所以如果某个任务的执行时间过长,那么将破坏其他任务的定时精确性。如一个任务每1秒执行一次,而另一个任务执行一次需要5秒,那么如果是固定速率的任务,那么会在5秒这个任务执行完成后连续执行5次,而固定延迟的任务将丢失4次执行。

2、如果执行某个任务过程中抛出了异常,那么执行线程将会终止,导致Timer中的其他任务也不能再执行。

3、Timer使用的是绝对时间,即是某个时间点,所以它执行依赖系统的时间,如果系统时间修改了的话,将导致任务可能不会被执行。

二、使用ScheduledThreadPoolExecutor

由于Timer存在上面说的这些缺陷,在JDK1.5中,我们可以使用ScheduledThreadPoolExecutor来代替它,使用Executors.newScheduledThreadPool工厂方法或使用ScheduledThreadPoolExecutor的构造函数来创建定时任务,它是基于线程池的实现,不会存在Timer存在的上述问题,当线程数量为1时,它相当于Timer。

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);

scheduledThreadPool.schedule(newRunnable() {public voidrun() {

System.out.println("delay 3 seconds");

}

},3, TimeUnit.SECONDS);

scheduledThreadPool.scheduleAtFixedRate(()-System.out.println("delay 1 seconds, and excute every 3 seconds")

,1, 3, TimeUnit.SECONDS);

java jar添加网络延迟

影响性能问题也有网络,网络问题时不时的都会发生,如路由器、交换机和DNS服务器失败。更常见的是在一个高度分散的IT环境中定期或间歇性延迟。

间歇或定期的延迟会触发一些重要的性能问题,以不同的方式影响JavaEE应用程序。

因为大量的fetch迭代(网络传入和传出),涉及大数据集的数据查询问题的应用会非常受网络延迟的影响

应用程序在处理外部系统大数据负载(例如XML数据)时也会很受网络延迟的影响,会在发送和接收响应时产生巨大的响应间隔。

JavaEE容器复制过程(集群)也会受到影响,并且会让故障转移功能(如多播或单播数据包损失)处于风险中。

JDBC行数据“预取”、XML数据压缩和数据缓存可以减少网络延迟。在设计一个新的网络拓扑时,应该仔细检查这种网络延迟问题。

java程序偶尔停顿

1、系统响应时间跟不上java的运行速率。

2、cpu的运算能力不够,跟不上java计算。

3、网路延迟,导致Java程序崩溃,造成的卡顿。