📄 threadstatusdemo.java
字号:
//线程状态演示
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.util.*;
public class ThreadStatusDemo extends JFrame implements ActionListener
{
JPanel pnlMain;
static JLabel lblMove;
JButton btnControl,btnStart,btnSleep,btnDead;
//声明一个显示当前时间的线程
CurrentTime ct;
public ThreadStatusDemo()
{
super("线程状态演示");
pnlMain=new JPanel();
setContentPane(pnlMain);
lblMove=new JLabel("");
lblMove.setFont(new Font("宋体",Font.BOLD,22));
lblMove.setForeground(Color.RED);
btnStart=new JButton("开始");
btnStart.addActionListener(this);
btnSleep=new JButton("睡眠");
btnSleep.addActionListener(this);
btnDead=new JButton("结束");
btnDead.addActionListener(this);
btnControl=new JButton("挂起");
btnControl.addActionListener(this);
pnlMain.add(lblMove);
pnlMain.add(btnStart);
pnlMain.add(btnSleep);
pnlMain.add(btnControl);
pnlMain.add(btnDead);
setSize(250,150);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
//实现ActionListener接口必须实现的方法
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource()==btnStart)
{
//构造线程对象并通过start方法让它处于运行状态
ct=new CurrentTime();
ct.start();
}
if (ae.getActionCommand()=="挂起")
{
//通过suspend方法挂起线程,进入不可运行状态
btnControl.setText("重启");
ct.suspend();
}
if (ae.getActionCommand()=="重启")
{
//通过resume方法重新启动线程
btnControl.setText("挂起");
ct.resume();
}
if (ae.getSource()==btnSleep)
{
try
{
//通过sleep方法让线程进入睡眠状态
ct.sleep(3000);
}catch(Exception e)
{
JOptionPane.showMessageDialog(null,"线程错误!");
}
}
if (ae.getSource()==btnDead)
{
//通过stop方法将线程杀死
ct.stop();
}
}
public static void main(String args[])
{
ThreadStatusDemo td=new ThreadStatusDemo();
}
}
//独立的一个显示当前时间的线程类
class CurrentTime extends Thread
{
Date dateDisplay;
GregorianCalendar gcCalendar;
String strTime;
public CurrentTime(){}
//继承Thread类必须实现的run方法
public void run()
{
while(true)
{
displayTime();
try
{ this.sleep(1000);}
catch(InterruptedException e)
{ JOptionPane.showMessageDialog(null,"线程中断!");}
}
}
//显示当前日期和时间的函数
public void displayTime()
{
dateDisplay=new Date();
gcCalendar=new GregorianCalendar();
//获得当前时间
gcCalendar.setTime(dateDisplay);
//从当前时间中提取日期段和时间段
strTime=" 当前时间:"+gcCalendar.get(Calendar.HOUR)+":"+gcCalendar.get(Calendar.MINUTE)+":"+gcCalendar.get(Calendar.SECOND);
//显示当前日期和时间
ThreadStatusDemo.lblMove.setText(strTime);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -