• Java随机数与定时器


    一、随机数

    java.lang.Math.Random;

      调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。例子如下:

     1 package IO;
     2 import java.util.Random;
     3 
     4 public class TestRandom {
     5     
     6     public static void main(String[] args) {
     7         // 案例1
     8         System.out.println("Math.random()=" + Math.random());// 结果是个double类型的值,区间为[0.0,1.0)
     9         int num = (int) (Math.random() * 3); // 注意不要写成(int)Math.random()*3,这个结果为0,因为先执行了强制转换
    10         System.out.println("num=" + num);
    11         /**
    12          * 输出结果为:
    13          * 
    14          * Math.random()=0.02909671613289655
    15          * num=0
    16          * 
    17          */
    18   }
    19 }

    二、定时器

    (一)获取时间

    获取当前系统时间和日期并格式化输出:

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    
    

    public class NowString {
    public static void main(String[] args) {
    // 方法一
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
    System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
    // 方法二
    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar.getTime());
    }
    }

     (二)Timer和TimerTask

    JDK中,定时器任务的执行需要两个基本的类:

    java.util.Timer;java.util.TimerTask;

    运行一个定时任务基本步骤如下:

    1、建立一个要执行的任务TimerTask;

    2、创建一个Timer实例,通过Timer提供的schedule()方法,将TimerTask加入到定时器Timer中,同时设置执行的规则即可;

    (1)Timer中的schedule()有多种重载方法,以适应不同的情况:

    • a.  schedule(TimerTask task, Date time):安排在指定时间执行指定任务;
    • b.  schedule(TimerTask task, Date firsttime, Long period):安排指定的任务在指定时间指定周期重复执行;
    • c.  schedule(TimerTask task, Long delay):安排在指定延迟后执行指定任务;
    • d.  schedule(TimerTask task, Long delay, Long period):安排指定的任务从指定的延迟后开始重复的固定延迟执行;

    (2)时间的表示方法:delay或者period的单位是毫秒,所以可以用(60*60*1000表示一小时)、(单位是毫秒3*60*1000为三分钟)

    代码实现a:

     1 import java.text.SimpleDateFormat;
     2 import java.util.Calendar;
     3 import java.util.Timer;
     4 import java.util.TimerTask;
     5  
     6 public class MyTimerTask extends TimerTask {
     7     private Integer cout = 0;
     8     @Override
     9     public void run() {
    10         Calendar calendar = Calendar.getInstance();  //getInstance()返回Canlenda的一个通用对象
    11 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 12 System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间 13 System.out.println("NO.1"); 14 } 15 public static void main(String[] args) { 16 MyTimerTask task = new MyTimerTask(); 17 Calendar calendar = Calendar.getInstance(); 18 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 19 System.out.println(format.format(calendar.getTime())); 20 calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间 21 Timer timer = new Timer(); 22 timer.schedule(task,calendar.getTime()); 23 24 } 25 }

           

    代码实现d:

     1 import java.util.Timer;
     2 import java.util.TimerTask;
     3 
     4 public class Test {
     5     class TestTimerTask extends TimerTask {
     6         private int i = 1;
     7 
     8         @Override
     9         public void run() {
    10             System.out.println("定时器第" + i + "次执行!");
    11             i += 1;
    12         }
    13     }
    14 
    15     public static void main(String[] args) {
    16         Test test = new Test();
    17         Timer timer = new Timer();
    18         timer.schedule(test.new TestTimerTask(), 3000, 2000);  //延迟3秒,每隔两秒执行一次run()方法
    19     }
    20 }
  • 相关阅读:
    spring boot多数据源配置示例
    Java 8 Concurrency Tutorial--转
    ibatis annotations 注解方式返回刚插入的自增长主键ID的值--转
    mysql 字符串的处理
    How To Do @Async in Spring--转
    Resolving Problems installing the Java JCE Unlimited Strength Jurisdiction Policy Files package--转
    mysql导入数据,涉及到时间转换,乱码问题解决
    @Query Annotation in Spring Data JPA--转
    hive表信息查询:查看表结构、表操作等--转
    python时间戳
  • 原文地址:https://www.cnblogs.com/StarZhai/p/9961512.html
Copyright © 2020-2023  润新知