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

线程调用的问题
我有两个线程一个是Mythread,Mythread_2都继承了Thread这个类。
但是我用
1)Mythread mt = new Mythread();
Mythread_2 mt_2 = new Mythread_2();
mt.start();
mt_2.start();


2)Mythread mt = new Mythread();
Mythread_2 mt_2 = new Mythread_2();
Thread mt = new Thread(mt);
Thread mt_2 = new Thread(mt_2);
mt.start();
mt_2.start();
我想了解一下这两种方法来启动线程有什么区别么,具体是怎样运行的

------解决方案--------------------
你的程序本身就错着呢,你第二种写法中有相同的变量。

第二,如果你写对了。那么也不建议这样写,要说区别。严格的说:有。
按照你的风格,给你正确的写法。再解释。
第一种:

继承Thread类,直接调用 start()方法。不必要再把它当做参数放在新new出来的Thread()对象中。因为它本身就是一个线程了。

第二种:
实现Runnable接口。然后new一对象,当作参数传递给Thread()的构造方法中。


强烈建议,能实现Runnable接口的,就不要继承Thread。因为,java只支持单继承,你若再想继承别的类就不行了。

如有疑问联系我。