编写3个,各线程发分别显示各自的运行时间。|JAVA

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 设计思路

  • (1) Clock类用于主界面的显示,当中生成三个MyThread对象
  • (2) MyThread负责Jlabel的显示和时间的控制
Clock.java
package PackClock;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class Clock extends WindowAdapter
{
	public static JFrame f = new JFrame("时钟");

	public static void main(String[] args) 
	{ 
		MyThread T1;
		MyThread T2;
		MyThread T3;
		T1 = new MyThread("线程1",1000);
		T1.start();
		T2 = new MyThread("线程2",5000);
		T2.start();
		T3 = new MyThread("线程3",10000);
	    T3.start();
	    Clock a = new Clock();
	    a.dispaly();
	} 

	public void dispaly()
	{
		f.setSize(400,240);
		f.setLocation(200,140);
		f.setBackground(Color.LIGHT_GRAY);
		f.setLayout(new GridLayout(1,3));
		f.addWindowListener(this);
		f.setVisible(true);
	}
	
	public void windowClosing(WindowEvent e)
	{
		System.exit(0);
	}
}

MyThread.java
package PackClock;
import javax.swing.*;
import java.text.DecimalFormat;
class MyThread extends Thread 
{ 
	private long m = 0;
	private long countSec,countMin,countHour;//计时变量
	private DecimalFormat textFormat=new DecimalFormat("00");//格式化输出
	JLabel label ;
	MyThread(String name, long m) 
	{ 
		super(name); 
		this.m = m; 
		countSec = 0;
		countMin = 0;
		countHour = 0;
		label = new JLabel("0:0:0");
	    label.setText(textFormat.format(countHour)+":"+textFormat.format(countMin)+
	            ":"+textFormat.format(countSec));
		Clock.f.add(label);
		Clock.f.setVisible(true);
	} 
	 
	public void run() 
	{ 
		int x = 0; 
		try 
		{ 
			while(true) 
			{ 
				countSec += m/1000;
                if(countSec>=59)
                {
                    countMin++;
                    countSec=0;
                    if(countMin>=59)
                    {
                        countHour++;
                        countMin=0;
                    }
                }
                
		        label.setText(textFormat.format(countHour)+":"+textFormat.format(countMin)+
		                ":"+textFormat.format(countSec));

				Thread.sleep(m); 
				
			}
		} 
		catch(Exception e) 
		{ 
		} 
	} 
} 

猜你喜欢

转载自blog.csdn.net/weixin_43118073/article/details/106243506