📄 threaddemo.java
字号:
import javax.swing.UIManager;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class ThreadDemo { boolean packFrame = false; //Construct the application public ThreadDemo() { Frame1 frame = new Frame1(); //Validate frames that have preset sizes //Pack frames that have useful preferred size info, e.g. from their layout if (packFrame) { frame.pack(); } else { frame.validate(); } //Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } //Main method public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new ThreadDemo(); }}class Frame1 extends JFrame { JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); TextArea textArea1 = new TextArea(); //Construct the frame public Frame1() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); //使用内部类,实现线程 class DemoThread implements Runnable { String name; Thread t; DemoThread(String Name_of_Thread) { name=Name_of_Thread; t=new Thread(this,name); textArea1.append("New Thread:"+t+"\n"); t.start();//自动启动 } public void run() { try { for (int i=4;i>0;i--) { textArea1.append(name+":"+i+"\n"); Thread.sleep(1000);//等待一秒 } } catch(InterruptedException e) { textArea1.append(name+" interrupted.\n"); } textArea1.append(name+" exited.\n"); } } DemoThread th1=new DemoThread("One"); DemoThread th2=new DemoThread("Two"); //(1) 创建第三个线程 //DemoThread th3=new DemoThread("Three"); textArea1.append("Thread One is alive:"+th1.t.isAlive()+"\n"); textArea1.append("Thread Two is alive:"+th2.t.isAlive()+"\n"); /* try { textArea1.append("Waiting for threads to finished.\n"); //(3)如果去掉下面两句,会发生什么? // th1.t.join(); // th2.t.join(); //(2) 变换位置 */ //DemoThread th3=new DemoThread("Three"); /*} catch(InterruptedException e) { textArea1.append("Main thread Interrupted\n"); }*/ textArea1.append("Thread One is alive:"+th1.t.isAlive()+"\n"); textArea1.append("Thread Two is alive:"+th2.t.isAlive()+"\n"); textArea1.append("MainTread Exited."); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("Frame Title"); contentPane.add(textArea1, BorderLayout.CENTER); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -