日期:2014-05-20 浏览次数:20765 次
new Thread(Runnable R);
------解决方案--------------------
public void run() { if (target != null) { target.run(); } }
------解决方案--------------------
thread类run方法并不是你自己去调用的都是由Thread类的start方法启动的
start方法的文档说明:
Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.
可以看到是JVM调用了run方法。
其实你看JDK的源代码就知道Thread类其实也实现了Runnable接口,你了使用重载的构造函数Thread(Runnable target)只是将实现了Runnable接口的类定义在外部而已。
下面是run方法的文档说明
If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.
Subclasses of Thread should override this method.
可以看到,如果使用实现了Runnable接口的对象,则执行我们自定义那个对象的run方法,否则这个方法将什么也不做,并且返回。文档明确建议Thread类的子类应该重写run方法。