Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程

Java 线程创建与启动实战解析:Thread类与run方法重写

阿贵
2天前发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年08月31日,已超过2天没有更新,若内容或图片失效,请留言反馈。

Java 线程创建与启动实战解析:Thread类与run方法重写

79.png

一、原题完整代码呈现

以下是计算机二级Java考试中关于线程创建、启动及异常处理的典型题型,主要考察线程类继承、线程启动方法、构造方法调用、线程执行体及异常捕获,包含5处需要填写的空白(标记为//*********Found**********):

public  class  Java_2
{    
   public static void main(String[] args)
   {
      Thread t = new SimpleThread("Testing_Thread");
       //*********Found**********
      ______________  ;   
   }
} 
 //*********Found**********
class SimpleThread extends _________ 
{
   public SimpleThread(String str)
   {
      //*********Found**********
      _____________   ;
   }
    //*********Found**********
   public void _________()
   {  
      System.out.println("Running the " + getName() + ":");
      for (int i = 0; i < 5; i++)
      {
         System.out.println("---" + i + "---" + getName());
         try
         {
            sleep((int)(2 * 100));
         }
         //*********Found**********
         _________(InterruptedException e) 
      }
   }
}

二、空白处逐一解析与解答

1. 第一处空白:启动线程

答案:t.start()

//*********Found**********
t.start();

解析
创建线程对象后,需调用start()方法启动线程(JVM会自动调用线程的run()方法,实现并发执行)。直接调用run()方法会被当作普通方法执行,无法实现多线程,因此填写t.start()

2. 第二处空白:线程类继承的父类

答案:Thread

//*********Found**********
class SimpleThread extends Thread

解析
创建线程的常用方式之一是继承Thread类(线程基类),并重写其run()方法作为线程执行体。SimpleThread作为自定义线程类,需继承Thread以获得线程功能,因此填写Thread

3. 第三处空白:调用父类构造方法初始化线程名

答案:super(str)

//*********Found**********
super(str);

解析
Thread类有一个接收字符串参数的构造方法(Thread(String name)),用于设置线程名称。SimpleThread的构造方法参数str是线程名,需通过super(str)调用父类构造方法完成初始化,因此填写super(str)

4. 第四处空白:重写线程执行体方法

答案:run

//*********Found**********
public void run()

解析
run()方法是Thread类的核心方法,包含线程的执行逻辑(线程启动后实际运行的代码)。自定义线程类必须重写run()方法以定义具体任务,因此填写run

5. 第五处空白:捕获线程休眠异常

答案:catch

//*********Found**********
catch(InterruptedException e) 

解析
Thread.sleep(long millis)方法可能抛出InterruptedException(当线程休眠被中断时),属于受检异常,必须处理。try块后需用catch块捕获该异常,因此填写catch

三、完整正确代码

四、程序功能与运行说明

程序功能

该程序通过继承Thread类创建并启动线程,核心功能包括:

  1. 定义SimpleThread类继承Thread,重写run()方法(线程执行体)
  2. run()方法中循环5次,打印计数和线程名,每次循环休眠200毫秒
  3. main方法创建SimpleThread实例(线程名“Testing_Thread”)并启动线程
运行说明
  1. 线程启动:main方法中t.start()启动线程,JVM自动调用SimpleThreadrun()方法
  2. 执行过程:

    • 打印线程启动信息:Running the Testing_Thread:
    • 循环5次,每次打印格式为---计数---线程名(如---0---Testing_Thread
    • 每次循环后线程休眠200毫秒(模拟耗时操作)
  3. 输出结果:

    Running the Testing_Thread:
    ---0---Testing_Thread
    ---1---Testing_Thread
    ---2---Testing_Thread
    ---3---Testing_Thread
    ---4---Testing_Thread

五、核心知识点总结

  1. 线程创建的核心:继承Thread类

    • 步骤:

      1. 自定义类继承Thread类(class SimpleThread extends Thread
      2. 重写run()方法(线程执行体,定义线程任务)
      3. 创建线程对象(new SimpleThread(...)
      4. 调用start()方法启动线程(而非直接调用run()
    • 关键:start()方法是线程启动的唯一入口,会触发JVM创建新线程并执行run()
  2. Thread类的核心方法与构造

    • 构造方法:Thread(String name)通过字符串参数设置线程名,可通过getName()获取
    • run():线程执行体,必须重写以定义具体逻辑
    • start():启动线程,使线程进入就绪状态,等待CPU调度
    • sleep(long millis):使当前线程休眠指定毫秒数(静态方法),可能抛出InterruptedException
  3. 异常处理:InterruptedException

    • 触发场景:当线程在休眠(sleep)、等待(wait)等状态时被中断(如调用interrupt()方法)
    • 处理要求:受检异常,必须通过try-catch捕获或throws声明,否则编译错误
    • 本题简化处理:catch块为空,实际开发中可添加中断处理逻辑(如日志记录)
  4. 线程与普通方法的区别

    • 线程启动:start()方法创建新线程,与主线程并发执行
    • 普通调用:直接调用run()方法仅作为主线程中的普通方法执行,无并发效果
    • 示例:若将t.start()改为t.run(),输出结果相同但无多线程特性(本质是主线程执行run()

六、常见错误与应试技巧

  1. 常见错误分析

    • 第一处空白启动方法错误:写成t.run()(普通方法调用,无多线程)或start(t)(语法错误,start()是实例方法)
    • 第二处空白继承类错误:写成Runnable(接口,需用implements而非extends)或拼写错误(如Thred
    • 第三处空白构造调用错误:写成this(str)(调用本类构造,未初始化父类线程名)或遗漏(线程名无法设置,getName()返回默认名称)
    • 第四处空白方法名错误:写成run()以外的名称(如runThread(),JVM不会自动调用,线程无执行逻辑)
    • 第五处空白异常捕获错误:写成Catch(首字母大写)或try(语法错误,try后必须跟catchfinally
  2. 应试技巧

    • 线程启动口诀:“线程对象创建后,start()方法来启动,自动调用run()方法,并发执行靠它行”
    • 继承规则:“自定义线程继承Thread,run()方法必须重写,线程任务里面写”
    • 异常处理:“sleep方法抛异常,try-catch不能忘,InterruptedException要捕获”
    • 调试技巧:在main方法和run方法中添加线程名打印(Thread.currentThread().getName()),观察线程执行主体

通过本题,我们掌握了继承Thread类创建线程的完整流程、start()run()的区别、线程名的设置及sleep方法的异常处理。理解线程的启动机制是掌握多线程编程的基础,对开发并发应用具有重要意义。

喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消 登录评论