JavaSE作业7_多线程作业1_线程休眠

一、作业要求:

设计一个线程操作类,要求可以产生三个线程对象,并可以分别设置三个线程的休眠时间,如下所示:

线程A,休眠10秒

线程B,休眠20秒

线程C,休眠30秒

要求:

采用以下两种方式方式分别实现该功能:

1,Tread类

2,Runnable

二、代码实现

(一)、以继承Tread类的方式实现

1、代码

package task_07_Exception_Thread;

import java.text.SimpleDateFormat;
import java.util.Date;

public class ThreadSleep extends Thread
{
	// 线程休眠时间
	private int sleepTime;
	
	// 可初始化线程名称的构造方法
	public ThreadSleep(String ThreadName) {
		// 调用父类带参数的构造方法初始化线程名称
		super(ThreadName);
	}
	
	// 设置线程休眠时间
	public void setSleepTime(int sleepTime)
	{
		this.sleepTime = sleepTime;
	}
	@Override
	public void run()
	{
		try
		{
			// 注意线程进入休眠的时间点
			System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+" --> "+Thread.currentThread().getName()+"进入休眠,休眠时间为"+sleepTime/1000+"秒");
			// 让线程休眠sleepTime毫秒
			Thread.sleep(sleepTime);
			// 注意线程休眠结束的时间点,可以看到休眠结束与进入休眠的时间差刚好为上面的sleepTime毫秒
			System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+" --> "+Thread.currentThread().getName()+"休眠结束。");
		} catch (InterruptedException e)
		{
			e.printStackTrace();
		}
	}
	public static void main(String[] args)
	{
		// 创建线程A
		ThreadSleep t1 = new ThreadSleep("线程A");
		// 设置线程A的睡眠时间
		t1.setSleepTime(10000);
		
		// 创建线程B
		ThreadSleep t2 = new ThreadSleep("线程B");
		// 设置线程B的睡眠时间
		t2.setSleepTime(20000);
		
		// 创建线程C
		ThreadSleep t3 = new ThreadSleep("线程C");
		// 设置线程C的睡眠时间
		t3.setSleepTime(30000);
		
		System.out.println("================这是以继承Tread类的方式实现的================");
		// 启动线程A、B、C
		t1.start();
		t2.start();
		t3.start();
	}
}

2、运行结果:

(二)、以实现Runnable接口的方式实现

1、代码

package task_07_Exception_Thread;

import java.text.SimpleDateFormat;
import java.util.Date;

public class RunnableSleep implements Runnable
{
	// 线程休眠时间
	private int sleepTime;
	// 设置线程休眠时间
	public void setSleepTime(int sleepTime)
	{
		this.sleepTime = sleepTime;
	}
	
	@Override
	public void run()
	{
		try
		{
			// 注意线程进入休眠的时间点
			System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+" --> "+Thread.currentThread().getName()+"进入休眠,休眠时间为"+sleepTime/1000+"秒");
			// 让线程休眠sleepTime毫秒
			Thread.sleep(sleepTime);
			// 注意线程休眠结束的时间点,可以看到休眠结束与进入休眠的时间差刚好为上面的sleepTime毫秒
			System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+" --> "+Thread.currentThread().getName()+"休眠结束。");
		} catch (InterruptedException e)
		{
			e.printStackTrace();
		}
	}

	public static void main(String[] args)
	{
		System.out.println("================这是以实现Runnable接口的方式实现的================");
		// 实例化Runnable子类(RunnableSleep)对象r1
		RunnableSleep r1 = new RunnableSleep();
		// 设置该线程的休眠时间为10秒
		r1.setSleepTime(10000);
		// 创建以r1线程为运行对象、名称为“线程A”的实例化线程对象并启动该线程
		new Thread(r1, "线程A").start();
		
		// 实例化Runnable子类(RunnableSleep)对象r2
		RunnableSleep r2 = new RunnableSleep();
		// 设置该线程的休眠时间为20秒
		r2.setSleepTime(20000);
		// 创建以r2线程为运行对象、名称为“线程B”的实例化线程对象并启动该线程
		new Thread(r2, "线程B").start();
		
		// 实例化Runnable子类(RunnableSleep)对象r3
		RunnableSleep r3 = new RunnableSleep();
		// 设置该线程的休眠时间为30秒
		r3.setSleepTime(30000);
		// 创建以r3线程为运行对象、名称为“线程C”的实例化线程对象并启动该线程
		new Thread(r3, "线程C").start();
	}
}

2、运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值