java计时器

这篇具有很好参考价值的文章主要介绍了java计时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • java计时器

     

  • 在 Java中,我们有一个重要的概念:同步和异步。同步就是 Java中的线程安全,异步就是 Java中的线程非安全。 在使用 JVM时,我们一般都是用 start ()方法启动一个线程,然后设置时间,比如定时器,定时器是在某个指定的时间执行相应的任务。但是,在实际应用中,我们会遇到一些特殊的场景:比如我们要定时的计算一个数,我们不想每次都去执行 sleep ()或者 wait ()方法。 此时,如果我们不用定时器,而是直接使用计时器,这个时候计时器就会开始计时;如果要使用定时器来计算一个数,那么定时器就会暂停计时。下面我们来看一个简单的例子。

    • 1、初始化

      下面我们来看下初始化,首先,我们先来看一下定时器怎么初始化: 上面这个代码是通过循环来进行的,每执行一次循环就会执行一个线程,当线程运行到某个值时,它就会停止。而这个值是定时器里面的 current类中的一个方法: 那么如何获取 current类中的一个方法呢? 上面的代码是通过循环来进行的,这里我们将 current类中的 decrease方法拿出来,然后利用这个方法来获取 current类中的一个方法: 当获取到 current类中的一个方法后,我们可以将其注册到 runtime里面。下面我们来看一下这个 current类中的 decrease方法: 上面的代码是通过循环来进行初始化的,下面我们再看一下它是如何运行起来的:

    • 2、暂停计时

      上面的代码使用了一个 sleep ()方法来进行定时器的暂停,当我们不想执行 sleep ()方法时,就可以直接使用计时器,这样一来,如果使用计时器的话,就会暂停计时,从而避免了中断任务。 但实际上,我们还可以使用 run ()方法来进行暂停计时。run ()方法也是用来启动一个线程的,不过和上面的代码不同的是: run ()方法并不是调用 start ()方法,而是调用了 run ()。 Run ()方法。 run ()方法就是通过调用当前线程的 start ()方法来启动一个新的线程。然后在 run ()方法中设置好定时器的时间,当定时器的时间到了后就会执行相应的任务。 使用上面的例子可以发现:我们其实是不用通过 start ()来启动新线程的。这样就避免了中断任务;而且如果我们直接调用定时器来执行任务的话,也会比直接使用计时器更加高效。 另外, java中还有一个叫做 synchronized的方法,它和 start ()、 run ()有很大的区别。 synchronized是用来在线程之间传递参数的,也就是说 java中所有线程都可以调用 synchronized,当某个线程调用 synchronized时,其他线程就不能再执行这个任务了。

    • 3、重置

      如果我们在上面的例子中,使用了 undefined ()方法,那么这个时候我们就可以使用重置计时器来进行重置了。 我们首先定义一个对象,这个对象代表的是一个定时器,然后在对象内部的java.util.co ncur rent. thread方法中定义一个计时函数。 然后在循环中,当当前计时的值小于等于0的时候,我们就停止计时。如果当前计时值大于0,那么我们就继续计时。此时,如果当前计时器执行的是 wait ()方法,那么该方法将会一直等待执行。 接下来我们看一下重置计时器的使用场景: 上面的代码主要是使用重置计时器来实现计时器和定时器中断两个功能,我们只需要设置两个参数就可以了。

    • 4、返回

      上面的代码是不是很简单,而且我们只需要调用一个定时器,就能实现计时、暂停和返回三个功能。这其实很容易理解,因为我们只要设置好一个定时器的时间,就能完成定时任务,并且将结果返回给用户。 其实在 Java中,除了上述的三种功能外,还有很多其他的定时方法。上面代码中,我们在 java. util. TimerCount方法中设置了一个定时器的时间和数量。当时间到达后,就会执行 wait ()方法,在此之前的定时器不会执行任何操作。而如果设置的时间还没有到达,就会调用 sleep ()方法。在 sleep ()方法中,我们也可以设置定时器的时间和数量,例如设置一个小时,然后再定时器中计时。 上面的代码中,我们使用了一个 readLine ()方法来获取一个数的数值。当这个数为0时,会调用 wait ()方法来停止计时。但是我们使用了一个定时器来计时。因为如果使用 sleep ()方法计算出的结果是0的话,那么这个数就无法计算出来。 在上面的例子中:定时器用来计算一个数时;使用了 sleep ()和 wait ()方法来暂停计时;而在计算完后又使用了 readLine ()方法来返回结果。 以上就是 Java中使用定时器的简单方法和效果。如果有什么不明白的地方,可以在下方评论留言!

    • 5、总结

      在使用 JVM时,我们经常需要设置一个计时器,但是,在实际应用中,我们会遇到一些特殊的场景。如果不使用计时器,那么线程就会一直运行下去;如果要使用计时器,那么这个时候就会暂停计时。其实, JVM有两种方式可以让线程停止计时。 第一种是 start ()方法:每次调用 start ()方法时, JVM就会启动一个新的线程,就会暂停计时;当再次调用 start ()方法时, JVM就会重新启动新的线程。 当两个方法都被调用时, JVM就会停止计时。 为了让我们的程序更加稳定,所以 java提供了一些特性。比如: 可以通过 sleep ()和 wait ()来设置等待时间; 可以使用try-catch语句来保证线程安全; 可以通过 synchronized关键字来实现同步; 可以使用try-except关键字来禁止代码中的异常;

常用的java计时器代码:

1. 使用Timer类实现计时器
```java
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
int count = 0;
@Override
public void run() {
count++;
System.out.println("计时器已经运行了 " + count + " 秒");
}
}, 0, 1000);
}
}
```
2. 使用ScheduledExecutorService类实现计时器
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class MyTimer {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new Runnable() {
int count = 0;
@Override
public void run() {
count++;
System.out.println("计时器已经运行了 " + count + " 秒");
}
}, 0, 1, TimeUnit.SECONDS);
}
}
```
3. 使用System.currentTimeMillis()实现计时器
```java
public class MyTimer {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
int count = 0;
while (true) {
long currentTime = System.currentTimeMillis();
if (currentTime - startTime >= 1000) {
count++;
System.out.println("计时器已经运行了 " + count + " 秒");
startTime = currentTime;
}
}
}
}
```文章来源地址https://www.toymoban.com/news/detail-417390.html

到了这里,关于java计时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 14、计时器、定时器设计与应用

    掌握同步四位二进制计数器 74LS161 的工作原理和设计方法 掌握时钟/定时器的工作原理与设计方法 任务 1:采用行为描述设计同步四位二进制计数器 74LS161 任务 2:基于 74LS161 设计时钟应用 1.创建工程并创建 Verilog 文件 建立 HDL 类型的工程 My74LS161,创建 Verilog 文件 My74LS161,

    2024年02月03日
    浏览(39)
  • 51单片机通过计时器实现倒计时

    软件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    浏览(49)
  • WPF计时器功能

    本文实现WPF的计时器功能是通过system.timers.timer这个组件实现的。现在网上相关的资料有很多,我只是在自己的工作中刚好遇到要实现这个功能,中间也走了很多的弯路,不停的参考网上现有的资源,终于实现了基本的定时功能。希望本文可以帮助到您,让您花更少的时间来完

    2024年02月05日
    浏览(37)
  • RIP四大计时器

    RIP 计时器(以下均以华为 ensp 中信息为参考) 希望有需要的小伙伴可以参考参考,如有误解、请指正! 一、实验原理 1. 更新计时器( Update Timer ) Update time(更新时间):指运行RIP协议的路由器向其连接口广播自己的路由信息的时间间隔(用于更新RIP路由表信息),控制

    2024年02月03日
    浏览(31)
  • 24秒计时器

    方案一:采用计数器(74LS192)作为核心部分。同时选择(74LS47)作为BCD码译码器来对7段数码显示管进行译码驱动,两个七段共阳数码显示管进行显示。采用计时器(NE555)制成的多谐振荡器,进行秒脉冲的输入。因为我们需要对其进行暂停、清零、报警和自动清零等控制,所

    2024年02月06日
    浏览(35)
  • 555计时器原理

    以Multisim上的555计时器为例: 图0.0 555计时器包含八个引脚 分别为: RST - Reset 复位引脚(低电平有效) DIS - Discharge 三极管集电极Collector输入引脚 THR - Threshold 上阈值电压引脚 TRI - Trigger 触发引脚 CON - Control voltage 1 电压控制引脚 OUT - Output 信号输出引脚 VCC GND 555定时器内部功能图

    2024年02月05日
    浏览(33)
  • Qt实现计时器

    一、样图 二、代码 mainwidow.h mainwindow.cpp main.cpp ui_mainwindow.h

    2024年02月07日
    浏览(29)
  • STM32屏幕计时器

    显示屏显示计时时间,格式为 00:00:00 ,依次为 时:分:秒 ,程序运行之后自动计时,当按下按键,计时清零,按下按键采用外部中断。 调用lcd驱动代码让屏幕显示时间信息, 屏幕为SPI协议的128x128的LCD屏幕,查看原理图,找到对应接口 在STM32CubeMX中进行引脚配置 由于所调用的

    2024年02月09日
    浏览(28)
  • Verilog秒表计时器设计

    Verilog秒表计时器设计 设计一个基于Verilog的秒表计时器,该计时器可以在嵌入式系统中使用。下面是详细的设计说明和相应的源代码。 设计说明: 秒表计时器是一种常见的计时工具,可以用于测量时间间隔。在嵌入式系统中,我们可以使用Verilog语言来实现一个简单的秒表计

    2024年02月02日
    浏览(37)
  • Spring计时器StopWatch

    StopWatch类是Spring框架中用于测量代码执行时间的工具类,它提供了一系列属性来记录监测信息。 本文基于spring-boot-starter-web:2.2.2RELEASE版本。 源码: 属性 描述 id 表示该StopWatch对象的唯一标识符,可以通过构造函数传入。 keepTaskList 表示是否保留所有记录的监测任务,,默认为

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包