📄 thread15_3.java
字号:
/** * FileName:Thread15_3 * Description: * Copyright: Copyright (c) 2002 * Company: * @author:Liyunshan * @version 1.0 */import java.awt.*;import java.awt.event.*;import javax.swing.*;class ThreadFrame extends JFrame{ //定义控件 JButton startButton; JButton pauseButton; JButton stopButton; JTextField textField; RandomNumber theThread; //类构建器 public ThreadFrame() { super("Thread action"); Container pane = getContentPane(); textField = new JTextField(" ", 1); startButton = new JButton("Start"); pauseButton = new JButton("Pause"); stopButton = new JButton("Stop"); JPanel paneUp = new JPanel(); JPanel paneDown = new JPanel(); theThread = new RandomNumber(textField); //添加控件 pane.add(paneUp, "Center"); pane.add(paneDown, "South"); paneUp.add(textField); paneDown.add(startButton); paneDown.add(pauseButton); paneDown.add(stopButton); setSize(300, 100); //设置窗体大小 setVisible(true); //设置窗体为可见 //初始化控件状态 textField.setEditable(false); pauseButton.setEnabled(false); stopButton.setEnabled(false); //关闭窗口事件 addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); //添加启动按钮事件,启动线程 startButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { if (!theThread.isAlive()) { theThread.start(); theThread.isEnded = false; textField.setEditable(false); startButton.setEnabled(false); pauseButton.setEnabled(true); stopButton.setEnabled(true); } } } ); //添加暂停/恢复按钮事件,暂停/恢复线程 pauseButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { theThread.isSuspended = !theThread.isSuspended; if (theThread.isSuspended) //暂停线程 { pauseButton.setText("Resume"); } else //恢复线程 { pauseButton.setText("Pause"); { synchronized(theThread) { theThread.notify(); } } } } } ); //添加终止按钮事件,终止线程 stopButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { theThread.isEnded = true; startButton.setEnabled(false); pauseButton.setEnabled(false); stopButton.setEnabled(false); } } ); }}class RandomNumber extends Thread{ JTextField textField; boolean isEnded; //表示线程是否终止 boolean isSuspended; //表示线程是否暂停 //构建器 public RandomNumber(JTextField t) { textField = t; isEnded = false; isSuspended = false; } //线程体 public synchronized void run() { while (!isEnded) //如果isEnded为true,则退出循环,结束线程 { try { if (!isSuspended) //正常状态 { int temp = (int) (Math.random() * 10); textField.setText("" + temp); sleep(100); } else //暂停状态 { wait(); } } catch(InterruptedException e) {} } }}public class Thread15_3{ public static void main(String args[]) { ThreadFrame frame = new ThreadFrame(); frame.setVisible(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -