Java笔记九 线程创建的第一种方式:继承Thread类

本文详细介绍Java中通过继承Thread类创建线程的方法,包括线程的生命周期、状态及异常处理,通过示例代码演示线程的创建和运行。

使用Notepad++编辑器,学习视频:毕向东Java基础教程

线程创建方式一:继承Thread类

(1)步骤

  • 定义一个类,继承Thread类
  • 覆盖Thread类中的run方法(它定义了线程要运行的任务代码)
  • 创建Thread类的子类的对象,从而创建一个线程
  • 子类对象调用start()方法,从而开启线程,JVM调用线程的run方法,执行任务。

(2)为什么要覆盖Thread类中的run方法?(自定义线程的任务在哪?)

  • 因为Thread类对线程进行描述,而线程是有任务的,Thread类也对任务进行描述,这个任务就是通过Thread类中的run方法来体现,也就是说,run方法是封装自定义线程运行任务的函数。开启线程是为了运行指定代码,只有继承Thread类,并覆盖Thread类中的run方法,将运行的代码定义在run方法中。

(3)可以通过Thread类的getName()方法获取线程的名称,Thread - 编号(从0开始),线程一经创建,编号就确定了

(4)通过Thread.currentThread().getName(),返回当前正在运行的线程的名称,主线程名称—main

(5)在子类构造函数中,通过super(Name),可以自定义线程名称

(6)每一个线程都是一条单独的执行路径,某个线程发生异常或结束,并不影响其他线程的执行,它们在栈中都有自己的栈区
(7)线程的几种状态:在这里插入图片描述
注:sleep(time)时间到恢复,单位毫秒

线程创建方式一示例如下:


//线程创建的方式一:继承Thread类

//每一个线程都是独立的运行单元,某一个线程运行结束,不影响其他的线程的执行


//第一步:创建一个新类,继承Thread类
class Demo extends Thread  
{
	private String name;
	
	Demo(String name)
	{
		this.name = name;
		//super(name);  //自定义线程名称,默认为编号
	}
	

	//第二步:覆盖run方法,定义任务代码
	public void run()  
	{
		//int[] arr = new int[3];
		for(int x=0;x<9;x++)
		{
			//System.out.println(arr[3]);  //线程抛出异常:java.lang.ArrayIndexOutOfBoundsException
			//获取当前正在运行的线程名称
			System.out.println(name+".....x= "+x+".....ThreadName= "+Thread.currentThread().getName());  
		}
	}
}


class ThreadDemo
{
	public static void main(String[] args)
	{
		//第三步:创建线程,实例化Thread类的子类对象
		Demo d1 = new Demo("flower");
		Demo d2 = new Demo("frech");
		
		//第四步:开启线程,每个线程都有固定编号,从0开始
		d1.start();
		d2.start();
		
		//System.out.println(1/0);  //主线程抛出异常:java.lang.ArithmeticException,但不影响另外两个线程的执行
		//主线程任务代码
		for(int x=0;x<9;x++)
		{
			System.out.println("x= "+x+".....ThreadName= "+Thread.currentThread().getName()); 
		}		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值