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 }