黑马程序员技术交流社区
标题:
创建thread和runnable有什么区别?
[打印本页]
作者:
xiayoutianxia
时间:
2014-9-10 20:27
标题:
创建thread和runnable有什么区别?
好像是面试题
作者:
hsy
时间:
2014-9-10 21:41
你的意思是不是多线程的两种创建方式啊,第一种是创建类继承Thread类,重写Thread类的run()方法。第二种是
创建一个类实现Runnable接口,重写run()方法,然后创建实现类对象,并把它作为参数传递给Thread类的构造方法,创建Thread对象,通过Thread的对象执行
作者:
姠佐メ亾佑つ
时间:
2014-9-11 10:09
一楼的朋友都明确思路了;这是代码体现.
线程创建的俩种方式 :
package bbs.itheima.com;
public class TraditionalThread {
public static void main(String... args) {
/*
第一个创建线程思路:
1.继承Thread类。
2.覆盖Thread类中的run方法。
3.把线程要运行的代码封装到run方法中。
4.调用strat方法,开启一个线程并调用run方法。
*/
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName());
}
}
}.start();
/*
第二中创建线程思路:
1.实现Runnbale接口。
2.覆盖Runnable接口的run方法。
3.创建一个线程,把Runnable子类当成参数进行传递。
4.把线程要运行的代码封装到Runnable子类的run方法中。
5.调用线程的start方法,开启线程并调用run方法。
*/
new Thread(new Runnable(){
public void run(){
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
}).start();
/*
如果Thread子类构造参数接收一个Runnable接口的子类对象,并且覆盖Thread子类的run方法。
那么调用strat方法会调用哪个线程里面的run方法呢?
答案:调用的是Thread子类中的run方法。
*/
new Thread(new Runnable(){
public void run(){
System.out.println("Runnable");
}
}){
public void run(){
System.out.println("subThread");
}
}.start();
}
}
}
}
/*
总结:俩种创建线程的方式,到底用哪个更合适呢?
其实俩种方法都可以,但是第二种方法更能体现面向对象的思想。
*/
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2