通过继承Thread类实现多线程

本文介绍如何通过继承Thread类来实现Java多线程,并详细解释了重写run()方法的原因及start()方法与run()方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子1:通过继承Thread类实现多线程

/*

 * 该类要重写run()方法,为什么呢?

 * 不是类中的所有代码都需要被线程执行的。

 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码。

 */

public classMyThread extendsThread {

 

   @Override

   public void run() {

      // 自己写代码

      // System.out.println("好好学习,天天向上");

      // 一般来说,被线程执行的代码肯定是比较耗时的。所以我们用循环改进

      for (int x = 0; x < 200; x++){

         System.out.println(x);

      }

   }

 

}

 

/*

 * 需求:我们要实现多线程的程序。

 * 方式1:继承Thread类。

 * 步骤

 *    A:自定义类MyThread继承Thread类。

 *    B:MyThread类里面重写run()?

 *        为什么是run()方法呢?

 *    C:创建对象

 *    D:启动线程

 */

public classMyThreadDemo {

   public static void main(String[] args) {

      // 创建线程对象

      // MyThread my = new MyThread();

      // // 启动线程

      // my.run();

      // my.run();

      // 调用run()方法为什么是单线程的呢?

      // 因为run()方法直接调用其实就相当于普通的方法调用,所以你看到的是单线程的效果

      // 要想看到多线程的效果,就必须说说另一个方法:start()

      // 面试题:run()start()的区别?

      // run():仅仅是封装被线程执行的代码,直接调用是普通方法

      // start():首先启动了线程,然后再由jvm去调用该线程的run()方法。

      // MyThread my = new MyThread();

      // my.start();

      // // IllegalThreadStateException:非法的线程状态异常

      // // 为什么呢?因为这个相当于是my线程被调用了两次。而不是两个线程启动。

      // my.start();

 

      // 创建两个线程对象

      MyThreadmy1 = newMyThread();

      MyThreadmy2 = newMyThread();

 

      my1.start();

      my2.start();

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值