黑马程序员技术交流社区
标题:
关于线程问题
[打印本页]
作者:
李涛兴
时间:
2012-11-15 22:11
标题:
关于线程问题
本帖最后由 李涛兴 于 2012-11-15 22:35 编辑
使用接口方式实现线程问题的时候,为什么要将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数?可以理解是Runnable没有实现线程的方法,即没有start()方法吗?
作者:
陈莹
时间:
2012-11-15 22:19
Java API中这样写道:
Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。
设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议。例如,Thread 类实现了 Runnable。激活的意思是说某个线程已启动并且尚未停止。
此外,Runnable 为非 Thread 子类的类提供了一种激活方式。通过实例化某个 Thread 实例并将自身作为运行目标,就可以运行实现 Runnable 的类而无需创建 Thread 的子类。大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。
作者:
李栋梁
时间:
2012-11-15 22:19
你可以找一下,接口那种方式实现线程,最终底层代码也是另外一种方式
作者:
张综
时间:
2012-11-15 22:28
当一个类需要继承另一个类后,就不能再去继承Thread类了
我们可以使用Thread类的另一个构造器:Thread(Runnable)。
Runnable – 一个接口,只有一个run()方法。
Runnable接口的对象表示一个任务!任务是需要线程来执行的。
可以new Thread(new MyRunnable())来创建一个线程对象,这个线程对象就已经有了任务了。
在启动线程时就执行自己的任务。
Thread是完成任务的人,而Runnable就是任务
Thread类是完成任务的人,而Runnable只是一个任务而已。
需要把Runnable对象给Thread类,然后启动的还是Thread对象。
作者:
张利
时间:
2012-11-15 22:34
由于Java是单继承关系,如果继承了Thread类就无法再继承其他的类,因此继承Thread的方法不常用,Java中还提供了一个实现多线程的方法,即Runable接口。
由于Runable接口中只定义了一个方法,即run(),之前提到多线程需要操作系统的支持,而run()方法是无法启动的,需要通过Thread类的start()启动操作系统对多线程的支持。在Thread类中提供了一个以Runabel类型参数的构造函数,因此另一个实现多线程的方法是先实现Runable接口,然后再通过Thread(Runable)构建一个线程,通过Thread中的start()方法间接启动操作系统对多线程的支持
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2