黑马程序员技术交流社区

标题: 多线程Runnable问题,求解答 [打印本页]

作者: 。。。。。。。    时间: 2013-11-6 09:56
标题: 多线程Runnable问题,求解答
(四个问题)
创建新执行线程有两种方法,第二种通过实现Runnable接口的方式中为什么要把Runnable接口的子类对象传递给Thread类的构造函数呢?
这样传递过去以后Thread类的对象会发生什么样的变化呢?难道就可以直接调用start方法了吗?
还有就是让多线程启动到底是Thread类的对象还是Runnable接口的子类对象呢?



作者: 秦桂胜    时间: 2013-11-6 12:21
1. 因为,自定义的run方法所属的对象是Runnable接口的子类对象。所以要让线程去指定指定对象的run方法。就必须明确该run方法所属的对象。
2.传递过去以后Thread类的对象可以调用Runnable接口子类的run方法。
3.可以直接调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
4.让多线程启动是Thread类的对象。
例如卖票代码中:Thread t1=new Thread(t);
                       t1.start();

作者: 酱爆    时间: 2013-11-6 14:36
第一:线程执行的是run方法的内容,是不是对象中必须要有一个run方法才会被新线程执行,你觉得哪个对象中必须的有run方法,是不是实现了Runnable的接口的对象
第二:你要我开启一个新的线程,那么这个新的线程该干什么,你是不是通过参数的方式把要执行的对象传递给我,我去执行你这个对象中的run方法,
第三:Runnable只用作标识,具体的实现应该是Thread
作者: 秦大忠    时间: 2013-11-6 15:27
简单说吧,你要创建一个线程就必须创建一个Thread类,由这个类的对象去执行线程{new Thread(线程).start()},再说简单点Thread类就是用来执行线程的工具,你要执行线程就必须要用Thread类,接下来说这个Thread中的参数,这个参数就是你要执行的线程,而线程的实现由两种方法,1、继承Thread,2、实现Runnable接口,解释一下两种方法,第一种,继承Thread类,如class Demo extends Thread,这个时候建立线程就不需要参数了,因为Thread这个类实现了Runnable接口,Demo继承了Thread,等于Demo在调用自身的run方法,这里既继承了Thread执行线程的能力也实现了Runnable中的run方法;第二种,实现Runnable接口,必须复写Runnable中的run()方法,这个时候Thread的建立就必须要参数了(告诉Thread工具你要执行的是哪个线程),这个参数就是你实现了Runnable接口的类的对象,然后用这个你建立的工具(就是Thread的对象)去调用start()方法,说完了,说得这么好!深得毕老师真传呐!赞一个!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2