class Demo1 implements Runnable
{
public void run()
{
System.out.println("Hello World!");
}
}
class Demo
{
public static void main(String[] args)
{
Demo1 d = new Demo1();
Thread t = new Thread();//当没有把对象d作为参数传给线程t时,线程t调用的是Runnable自己的run方法。
Thread t = new Thread(d);//当没有把对象d作为参数传给线程t时,线程t调用的是Demo1的run方法。
t.start();
private Runnable target,的作用无非就是利用接口来接受实现接口的实例化对象。
以你的程序为例就是有两种情况:
1、Thread t = new Thread()
此时,并没有通过Thread类的构造函数传递任何实现Runnable接口的类,所以此时target为空。
这时,调用run()方法,必然没有任何效果,因为target = null。
2、 Thread t = new Thread(d);
此时,相当于执行过以下语句Runnable target = new Demo1;
所以此时target并不为空,当不为空的时候就要调用target的run方法,即你写的Demo1中的run方法的内容。
作者: 黑马--张帅 时间: 2012-9-1 15:46
郑义 发表于 2012-9-1 15:04
要理解这个问题,最好的方法就是从Java的源代码进行说明。
我从中截取一部分有用的代码进行说明:private R ...