import java.io.*;
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.util.*;
public class RunnableTest extends JFrame implements Runnable{ //创建类RunnableTest继承于类JFrame,并实现Runnable接口
JPanel pnlMain; //自定义变量
JLabel lblTime;
Thread thdTime;
Date dateDisplay;
GregorianCalendar gCalendar;
String sDate,sTime;
public RunnableTest(){ //定义界面标题
super("Runnable接口线程演示"); //定义容器、标签和字体
pnlMain=new JPanel();
lblTime=new JLabel("");
Font ft=new Font("宋体",Font.BOLD,15);
setContentPane(pnlMain); //将组件进行界面布局
pnlMain.setLayout(null);
pnlMain.add(lblTime);
lblTime.setBounds(45,40,350,45);
lblTime.setFont(ft);
thdTime=new Thread(this); //定义线程,并启动线程
thdTime.start();
setSize(400,150);
setVisible(true);
}
public void run(){ //重写方法run(),在方法run()中调用方法 displayTime()实现系统日期和时间的显示
while(thdTime!=null){
displayTime();
}
}
public void displayTime(){
dateDisplay=new Date();
gCalendar=new GregorianCalendar(); //定义标准日历类GregorianCalendar的对象
gCalendar.setTime(dateDisplay);
sDate="日期:"+ gCalendar.get(Calendar.YEAR)+"年"+(gCalendar.get(Calendar.MONTH)+1)+"月"+gCalendar.get(Calendar.DATE)+"日"; //获得系统当前日期和时间
sTime="时间:"+gCalendar.get(Calendar.HOUR)+":"+gCalendar.get(Calendar.MINUTE)+":"+gCalendar.get(Calendar.SECOND);
lblTime.setText(sDate+","+sTime); //在界面中显示日期和时间
}
public static void main(String[] args) {
RunnableTest rd=new RunnableTest();
}
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.util.*;
public class RunnableTest extends JFrame implements Runnable{ //创建类RunnableTest继承于类JFrame,并实现Runnable接口
JPanel pnlMain; //自定义变量
JLabel lblTime;
Thread thdTime;
Date dateDisplay;
GregorianCalendar gCalendar;
String sDate,sTime;
public RunnableTest(){ //定义界面标题
super("Runnable接口线程演示"); //定义容器、标签和字体
pnlMain=new JPanel();
lblTime=new JLabel("");
Font ft=new Font("宋体",Font.BOLD,15);
setContentPane(pnlMain); //将组件进行界面布局
pnlMain.setLayout(null);
pnlMain.add(lblTime);
lblTime.setBounds(45,40,350,45);
lblTime.setFont(ft);
thdTime=new Thread(this); //定义线程,并启动线程
thdTime.start();
setSize(400,150);
setVisible(true);
}
public void run(){ //重写方法run(),在方法run()中调用方法 displayTime()实现系统日期和时间的显示
while(thdTime!=null){
displayTime();
}
}
public void displayTime(){
dateDisplay=new Date();
gCalendar=new GregorianCalendar(); //定义标准日历类GregorianCalendar的对象
gCalendar.setTime(dateDisplay);
sDate="日期:"+ gCalendar.get(Calendar.YEAR)+"年"+(gCalendar.get(Calendar.MONTH)+1)+"月"+gCalendar.get(Calendar.DATE)+"日"; //获得系统当前日期和时间
sTime="时间:"+gCalendar.get(Calendar.HOUR)+":"+gCalendar.get(Calendar.MINUTE)+":"+gCalendar.get(Calendar.SECOND);
lblTime.setText(sDate+","+sTime); //在界面中显示日期和时间
}
public static void main(String[] args) {
RunnableTest rd=new RunnableTest();
}
}
知识点:1、线程的概念:单个顺序流,有自己独立的运行栈和程序计数器
2、类Thread和Runnable接口:想要实现多线程编写,最常用的方法就是继承类Thread或者实现Runnable接口
3、创建线程(类Thread、Runnable接口):线程可以通过继承类Thread或者实现Runnable接口,并重写方法run()实现
心得体会:多线程是指在单个的程序内可以同时运行多个不同的线程来完成不同的任务。运用线程的概念、类Thread和Runnable接口、创建线程就能实现时钟的实时显示。