multithreaddemo1.java

来自「java程序设计语言源代码」· Java 代码 · 共 69 行

JAVA
69
字号
//Example 1 of Chapter 8

import java.awt.*;
import javax.swing.*;

public class MultiThreadDemo1 extends JFrame
{
	private ScrollPane scrollPane;
	private JTextArea area;
	
	public MultiThreadDemo1()
	{
		super( "多线程输出演示" );
		getContentPane().setLayout( new BorderLayout() );
		scrollPane = new ScrollPane();
		area = new JTextArea();
		area.setEditable( false );
		scrollPane.add( area );
		getContentPane().add( scrollPane, BorderLayout.CENTER );
		
		OutputThread no1 = new OutputThread( "Number1" );
		OutputThread no2 = new OutputThread( "Number2" );
		OutputThread no3 = new OutputThread( "Number3" );
		
		area.append( "主程序启动\n" );
		
		no1.start();
		no2.start();
		no3.start();
		
		area.append( "主程序结束\n" );
		
		setSize( 300, 240 );
		setVisible( true );
	}
	
	public static void main(String[] args)
	{
		MultiThreadDemo1 demo = new MultiThreadDemo1();
		demo.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}
	
	private class OutputThread extends Thread
	{
		private int sleepTime;
		
		public OutputThread( String name )
		{
			super( name );
		}
		
		public void run()
		{
			try {
				sleepTime = ( int ) ( Math.random() * 2000 );
				area.append( getName() + ":即将休眠" + sleepTime + "毫秒\n" );
				Thread.sleep( sleepTime );
				sleepTime = ( int ) ( Math.random() * 2000 );
				area.append( getName() + ":即将再次休眠" + sleepTime + "毫秒\n" );
				Thread.sleep( sleepTime );
			}
			catch ( InterruptedException exception )
			{
				exception.printStackTrace();
			}
			area.append( getName() + ":结束运行\n" );
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?