java使用Thread类代表线程,所有线程的对象都必须是Thread类或Thread类的子类的实例。
继承Thread类创建线程类
通过继承Thread类创建并启动多线程的步骤:
1.定义Thread子类,重写Thread类中的run()方法,该run()方法方法体代表了线程需要完成的任务,即线程执行体。
2.创建Thread子类实例,即创建了线程对象。
3.调用线程对象的start()方法开启线程。
继承了Thread类的子类中可以直接使用this来获取当前正在执行的线程。
main方法的方法体是程序运行时默认的主线程。
Thread类提供的方法:
static currentThread() //返回当前正在执行的线程
getName() //该方法是Thread类的实例方法,用于返回调用该方法的线程名
setName(String name) //为线程设置名字
默认情况下主线程的名字是main,其他多个线程的名字依次是Thread-0、Thread-1、...、Thread-n。(其中0、1、...、n不是局部变量而是实例属性)
使用继承Thread类的方法来创建线程类时,多个线程之间无法共享线程的实例属性。
(原因:每次创建线程对象时都需要创建一个新的类对象,所以多个线程间不能共享该实例属性。)
实现Runnable接口创建线程类
Runnable接口创建并启动线程步骤:
1.定义Runnable接口的实现类,重写run()方法。
2.实例化Runnable实现类,并以此实例作为Thread类的target来创建Thread对象,此时该Thread对象才是真正的线程对象。
3.调用线程对象的start()方法开启线程。
注:Runnable对象仅作为Thread类的target,Thread实例执行的run()方法是target中的run()方法。
Thread类中提供了2个构造方法用来装载Runnable的实现类对象:
1.Thread(Runnable target) //接收Runnable子类对象实例
2.Thread(Runnable target,String name) //接收Runnable子类对象实例的同时为线程定义名字 |
|