自定义线程的创建方式

来源:互联网 发布:知乎 避孕套 父母 编辑:程序博客网 时间:2024/06/05 14:32
/*
 * 自定义线程的创建方式:
 *   方式一:
 *       1.自定义一个类继承Thread类。
 *       2.重写Thread类的run方法,把自定义线程的任务代码写在run方法上。
 *       3.创建Thread的子类对象,并且调用start方法启动一个线程
 *     注意:千万不要直接调用run()方法,调用start()方法的时候就会开启,线程一旦开启就会执行run方法中代码,如果直接调用
 *       run方法,那么就相当于调用了一个普通的方法而已。

 * */


运行结果为:

main主定义线程的i0
Thread-0自定义线程的i0
main主定义线程的i1
Thread-0自定义线程的i1
Thread-0自定义线程的i2
Thread-0自定义线程的i3
Thread-0自定义线程的i4
main主定义线程的i2
Thread-0自定义线程的i5
Thread-0自定义线程的i6
main主定义线程的i3
main主定义线程的i4
main主定义线程的i5
main主定义线程的i6
Thread-0自定义线程的i7
main主定义线程的i7
Thread-0自定义线程的i8
main主定义线程的i8
Thread-0自定义线程的i9
main主定义线程的i9


*   方式二:
 *       1.自定义一个类实现Runnable接口
 *       2.实现Runnable接口的run方法,把自定义线程的任务定义在run方法上
 *       3.创建Runnable实现类对象。
 *       4.创建Thread类的对象,并且把Runnable实现类的对象作为实参传递
 *       5.调用Thread对象的start方法开启一个线程
 * */


运行结果为:

main主定义线程的i0
张三自定义线程的i0
main主定义线程的i1
张三自定义线程的i1
main主定义线程的i2
张三自定义线程的i2
main主定义线程的i3
张三自定义线程的i3
main主定义线程的i4
张三自定义线程的i4
main主定义线程的i5
张三自定义线程的i5
main主定义线程的i6
张三自定义线程的i6
main主定义线程的i7
张三自定义线程的i7
main主定义线程的i8
张三自定义线程的i8
main主定义线程的i9
张三自定义线程的i9

/*

* 问题1: 请问Runnable实现类的对象是线程对象吗?
 *      Runnable实现类的对象并不是一个线程对象,只不过是实现了Runnable接口的对象而已。
 *      只有是Thread或者是Thread的子类才是线程对象。(因为Thread里面有start方法)
 * 问题2:为什么要把Runnable实现类的对象作为实参传递给Thread对象呢?作用是什么?
 *      作用就是把Runnable实现类的对象的run方法作为了线程的任务代码去执行了。
 * 推荐使用:第二种。实现Runnable接口的。
 * 原因:因为java单继承,多实现。
 * */


0 0