java随机数 时间_Java随机数与定时器

本文介绍了Java中如何生成随机数,并展示了使用Math.random()的方法。此外,还详细讲解了获取当前时间的方式,包括两种不同的实现。进一步探讨了JDK的定时器任务,包括Timer和TimerTask类,以及如何通过它们安排定时任务执行的不同方式。
摘要由CSDN通过智能技术生成

一、随机数

java.lang.Math.Random;

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

1 packageIO;2 importjava.util.Random;3

4 public classTestRandom {5

6 public static voidmain(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.0290967161328965515 * num=016 *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 importjava.text.SimpleDateFormat;2 importjava.util.Calendar;3 importjava.util.Timer;4 importjava.util.TimerTask;5

6 public class MyTimerTask extendsTimerTask {7 private Integer cout = 0;8 @Override9 public voidrun() {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 voidmain(String[] args) {16 MyTimerTask task = newMyTimerTask();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 = newTimer();22 timer.schedule(task,calendar.getTime());23

24 }25 }

代码实现d:

1 importjava.util.Timer;2 importjava.util.TimerTask;3

4 public classTest {5 class TestTimerTask extendsTimerTask {6 private int i = 1;7

8 @Override9 public voidrun() {10 System.out.println("定时器第" + i + "次执行!");11 i += 1;12 }13 }14

15 public static voidmain(String[] args) {16 Test test = newTest();17 Timer timer = newTimer();18 timer.schedule(test.new TestTimerTask(), 3000, 2000);  //延迟3秒,每隔两秒执行一次run()方法19 }20 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值