本帖最后由 罗雪梅 于 2012-9-30 17:09 编辑
第一种方式创建:直接继承Thread类,重写里面的run()方法,启动线程
//创建一个已经继承了Thread类的子类对象
ProductThread pt=new ProductThread();
//启动线程
pt.start();
第二种方式创建:先让本类去实现Runnable接口,重写run()方法,创建Thread类的线程对象,将实现了Runnable接口的子类对象做为参数传给Thread类的构造方法,调用Thread类的Start()方法。
//实现Runnable接口的本类对象的创建
Product p=new Product();
//创建一个线程对象,把p传给他
Thread t=new Thread(p);
//启动线程
t.start();
老师说第二种方式更好,a) Runnbale接口的出现,避免了单继承的局限性。 b) 将线程运行的代码都单独封装到Runnable接口类型的对象中,这样就实现了线程对象和任务对象的解耦(降低耦合性).
b)我明白能理解他的好处,但a)呢,接口是可以多实现,不过我创建线程只是继承一个Thread类啊,不用在继承其它的了与这个局限性好像关系不太大,而且第一种方式代码更少啊
|