JAVA--自定义线程

目录

继承Thread类

实现Runnable接口

实现Runnable和继承Thread两种方式的区别


 

两种方式:继承Thread类实现Runnable接口

继承Thread类

创建线程步骤:

  1. 定义类继承Thread。
  2. 复写Thread类中的run()方法。

         目的:将自定义代码存储在run()方法,让线程运行。

     3.调用线程的start方法。

         该方法两个作用:1.启动线程;2.调用run()方法。

运行结果:

       每一次都不同

因为多个线程都获取CPU的执行权,CPU执行到谁,谁就运行。

明确一点,在某个时刻,只能有一个程序在运行(多核除外)。

我们可以形象把多线程的运行行为看作互相抢夺CPU的执行权。

这就是多线程的一个特点:随机性:谁抢到谁执行,至于执行多长时间,CPU说了算。

 

重写run()方法原因:

Thread类用于描述线程,该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run()方法。也就是说,Thread类中的run()方法,用于存储线程要运行的代码

扩展:

创建好一个线程,使用start()方法和run()方法的区别:

start():开启线程并执行该线程的run()方法。

run():仅仅是对象调用方法。而线程创建了,并没有执行。

 

实现Runnable接口

创建线程步骤:

  1. 自定义类实现Runnable接口
  2. 覆盖Runnable接口中的run()方法

                 将线程要运行的代码存放在该run()方法中。

     3.通过Thread类建立线程对象。

     4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。

                要将Runnable接口的子类对象传递给Thread的构造函数的原因:

               自定义的run()方法所属的对象是Runnable接口的子类对象,所以要让线程去执行指定对象的run()方法,就必须明确该run()方法所属对象。

     5.调用Thread类的start()方法开启线程并调用Runnnable接口子类的run()方法。

 

实现Runnable和继承Thread两种方式的区别

  1. 实现Runnable接口避免了单继承的局限性,因此在定义线程时,建议使用实现方式。
  2. 继承Thread,线程代码存放在Thread子类run()方法中,实现Runnable,线程代码存放在Runnable接口实现类的run()方法中。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值