自定义线程的创建方式:
方式一:
1.自定义一个类继承Thread类。
2.重写Thread类的run方法,把自定义线程的任务代码写在run方法上。
3.创建Thread的子类对象,并且调用start()方法启动一个线程。
注意:千万不要直接调用run()方法,调用start()方法的时候线程就会启动,线程一旦开启就会执行run()方法中代码,如果直接调用run()
方法,那么就相当于调用了一个普通的方法而已。
方式二:
1.自定义一个类实现Runnable接口。
2.实现Runnable接口的run()方法,把自定义线程的任务定义在run()方法上。
3.创建Runnable实现类对象。
4.创建Thread类的对象,并且把Runnable实现类的对象作为实参传递。
5.调用Thread对象的start()方法开启一个线程。
问题1:Runnable实现类的对象是线程对象吗?
Runnable实现类的对象并不是一个线程对象,只不过是实现了Runnable接口的对象而已。
只有是Thread或者Thread的子类才是线程对象。
问题2:为什么要把Runnable实现类的对象作为实参传递给Thread对象呢?作用是什么?
把Runnable实现类的对象的run方法作为了线程的任务代码去执行了。
推荐使用:第二种,实现Runnable接口。
因为java是单继承,多实现的。
package com.cn.thread;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月6日09:23:38
* Desc:自定义线程的创建方式:
* 方式一:
* 1.自定义一个类继承Thread类。
* 2.重写Thread类的run方法,把自定义线程的任务代码写在run方法上。
* 3.创建Thread的子类对象,并且调用start()方法启动一个线程。
* 注意:千万不要直接调用run()方法,调用start()方法的时候线程就会启动,线程一旦开启就会执行run()方法中代码,如果直接调用run()
* 方法,那么就相当于调用了一个普通的方法而已。
*方式二:
* 1.自定义一个类实现Runnable接口。
* 2.实现Runnable接口的run()方法,把自定义线程的任务定义在run()方法上。
* 3.创建Runnable实现类对象。
* 4.创建Thread类的对象,并且把Runnable实现类的对象作为实参传递。