您的位置:首页 > 其它

关于线程开启的两种方式

2015-03-31 12:15 225 查看
第一种方式,继承Thread类

public class Thread extends java.lang.Thread {

private String name;

// 定义run方法
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(name + "haha");
}
}

// 构造函数重写构(无参)
public Thread() {

}

// 有参数的构造函数
public Thread(String name) {

this.name = name;
}

public static void main(String[] args) {

Thread t1 = new Thread("T1");
Thread t2 = new Thread("T2");

t1.start();
t2.start();

}

}


运行结果

T1haha
T1haha
T1haha
T1haha
T1haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T2haha
T1haha
T1haha
T1haha
T1haha

这种方式继承Thread类,直接通过Thread开启,这个run方法只是线程开启类内部自己调用,并不是用线程调用的也就是说线程的开启并不是Thread.run()

第二种方式实现Runnable 接口,实现这个接口会自动重写run方法


public class Hello implements Runnable {

private String name;

// 定义run方法
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(name + "haha");
}
}

// 构造函数重写构(无参)
public Hello() {

}

// 有参数的构造函数
public Hello(String name) {

this.name = name;
}

public static void main(String[] args) {

Hello h1 = new Hello("h1");
Thread t1 = new Thread(h1);
Hello h2 = new Hello("h2");
Thread t2 = new Thread(h2);
t1.start();
t2.start();

}

}



运行结果

h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha
h2haha
h1haha


这种方式也开启成功

总结:这两种方式都可以开启线程,区别是,一个实现接口,一个继承Thread类,一般都去实现接口,有两点好处:1,实现接口的run方法类可以帮你构造出来 2,Java支持单继承,但可以实现多个接口。个人想法:Thread类就好比是一个载体,都可以用,继承Thread就是直接使用,而runnable接口就相当于在中间过渡一下,得自己创建类对象(这个类对象实现runnable接口),然后放到Thread载体上,Thread就可以自动调用run方法。(总结纯属个人观点)


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: