本帖最后由 王世虎 于 2014-11-9 03:38 编辑
半夜学习遇到点问题希望高手指点,视频里面好像没讲
下面是API文档对创建线程一种方法是声明实现 Runnable 接口的类的说明
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:
class PrimeRun implements Runnable { long minPrime; PrimeRun(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } } 然后,下列代码会创建并启动一个线程:
PrimeRun p = new PrimeRun(143); new Thread(p).start();
此处有疑问,为什么可以直接new Thread(p),我知道这是Thread类的一个构造函数,我想问的是在此处为什么能直接创建Thread类的构造函数? API文档在对Thread类说明的时候提到Thread类以实现接口Runnable,这对于此处调用有没有影响? 或者说是Thread类自身有像Object类一样 可以在其他类中直接new一个构造函数?因为此处PrimeRun类只是implements Runnable并没有extends Thread 。 还有,是不是和线程代码存放的位置有关?实现 Runnable,代码存放在接口的子类的run方法中。 求大神帮忙解释,折腾半夜……
|