package com.wj.traditional;
/**
*
* @author wJing
* 2014-3-19 15:31:42
* 传统的2种线程使用方法
*/
public class ThreadDemo1 {
public static void main(String[] args) {
Thread thread = new Thread() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("1---" + Thread.currentThread().getName());
// System.out.println("2---" + this.getName());
}
}
};
thread.start();
//这种方式更体现面向对象的思想
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("2---" + Thread.currentThread().getName());
}
}
});
thread1.start();
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("runnable---" + Thread.currentThread().getName());
}
}
}) {
public void run() {
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("thread---" + Thread.currentThread().getName());
}
};
}.start();
}
}
在开发中建议使用第二种方式,实现runnable接口,因为这样更能体现面向对象的思想。不是因为第一种方法不好,而是大家都是在采用这种方式在编程,所以最好和大家满足一致
当一个 Thread即继承了Thread又实现了Runnable时,使用的是thread,因为在调用start方法后,虚拟机去找是否有run方法,如果找到了,就执行子类的方法,相当于覆盖了父类的run方法,如果没有找到,再去父类找,也就是使用runnable接口实现的run方法