使用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());
}
}
}
本文详细介绍Java中通过继承Thread类创建线程的方法,包括线程的生命周期、状态及异常处理,通过示例代码演示线程的创建和运行。

2175

被折叠的 条评论
为什么被折叠?



