java 多线程定时器(整点报时)
实现整点报时的详细步骤
第一 构建时间类
1.构建一个时间类 作为锁 和判断
public class Time {
public boolean flag; // 默认false 判断
public Time() {
super();
}
}
第二 构建一直持续输出时间的类
1.记录时间是用的Calendar类 方便处理时间的各个部分
2.传入的 JTextArea 是一个GUI实现的一个文本框 在这里显示时间
3.各个时间值 使用 StringBuffer 拼接起来
4.每次线程都休眠一秒,代表时间一秒就一次刷新时间
5.flag 是用来判断的如果到达整点 依旧输出改时间点 但是 flag改为false
6.使得下面的SetTime类实现报时的效果
import java.util.Calendar;
import javax.swing.JTextArea;
public class GetTime implements Runnable {
private Time t; //设置判断和作为一把对象锁
private JTextArea textArea; //文本域显示当前时间
public GetTime(Time t,JTextArea textArea) {
super();
this.t = t;
this.textArea=textArea;
}
public void run() {
//使时间都拼接成字符串的形式
StringBuffer sb = new StringBuffer();
//String s = "sss";
String str = null;
synchronized(t) {
while(true) {
//获取当前时间
Calendar c = Calendar.getInstance(); //可以对每个时间域单独修改
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int date = c.get(Calendar.DATE);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
//如果没有整点 就继续显示
if(!t.flag) {
str