日期:2014-05-20  浏览次数:20744 次

为什Java中不能通过java.lang.Thread类来直接创建类Thread的一个对象来创建线程??
类Thread

Java code

public class Thread extends Object implements Runnable


构造方法:
Java code

public Thread()
public Thread(Runnable target)
public Thread(Runnable target,String name)
public Thread(String name)


类Thread既不是抽象类也不是接口,那么Java中,为什么只提供两种创建新执行线程有方法:一种方法是将类声明为 Thread 的子类,该子类应重写 Thread 类的 run 方法;另一种方法是声明实现 Runnable 接口的类,该类然后实现 run 方法。难道Thread类不能够直接通过new来创建对象??如:
Java code
Thread thread = new Thread();
来创建对象??

------解决方案--------------------
写一个子类继承Thread类,是为了重写里面的run()方法,也就是线程启动后真正执行的内容。
如果你直接Thread thread = new Thread();创建对象,语法上没有错的,但是run()方法是系统默认的,也不是你自己想定义的线程中的方法,那这个线程有什么意义呢?
------解决方案--------------------
Java code

    /**
     * If this thread was constructed using a separate 
     * <code>Runnable</code> run object, then that 
     * <code>Runnable</code> object's <code>run</code> method is called; 
     * otherwise, this method does nothing and returns. 
     * <p>
     * Subclasses of <code>Thread</code> should override this method. 
     *
     * @see     #start()
     * @see     #stop()
     * @see     #Thread(ThreadGroup, Runnable, String)
     */
    public void run() {
    if (target != null) {
        target.run();
    }
    }