编写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) 
		{ 
		} 
	} 
} 
实验七 Java线程 一、实验目的: 熟悉利用Thread类建立多线程方法。 熟悉利用Thread接口建立多线程方法。 二、实验内容: 1. 阅读下列程序,分析并上机检验其功能。 class DelayThread exends Thread{ private static int count=0; private int no; private int delay; public DelayThread(){ count++; no=count; } public void run(){ try{ for (int i=0;i<10;i++){ delay=(int)(Math.random()*5000); sleep(delay); System.out.println(“Thread ”+no+” with a delay ”+delay); } }catch(InterruptedException e){}}} public class MyThread{ public static void main(String args[]){ DelayThread thread1=new DelayThread(); DelayThread thread2=new DelayThread(); thread1.start(); thread2.start(); try{ Thread.sleep(1000);}catch(InterruptedException e){ System.out.println(“Thread wrong”);}}} 2.讲上列程序利用Runnable接口改写,并上机检验。 3.利用多线程编写一个模拟时钟(AWT程序、Runnable接口),有时/分/秒针 编写一个应用程序创建三个线程分别显示各自的时间。 三、实验要求: 1. 通过实验掌握Thread 、Runnable使用方法; 2. 程序必须能够实现多线程; 3. 程序必须能够完成题目要求; 4. 写出实验报告。 四、实验步骤: 首先分析程序功能,再通过上机运行验证自己的分析,从而掌握通过Thread类建立多线程的方法。 通过将扩展Thread类建立多线程的方法改为利用Runnable接口的方法,掌握通过Runnable接口建立多线程的方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值