第一种:创建线程方式为new Thread的子类,从而可以override父类thread中的run方法
//线程
Thread thread = new Thread(){
@Override
public void run(){
}
};
thread1.start();
第二种:
//线程
Thread thread = new Thread(new Runnable()){
@Override
public void run(){
}
});
thread2.start();
注意:runnable不是线程,而是线程要运行的代码
比较:第二种,更加符合面向对象的思维。
下面的例子运行结果为:
//线程
new Thread(
new Runnable(){
public void run(){
runnable++++
}
}){
@Override
public void run(){
thread++++
}
}
注意:运行结果为runnable++++,原因是由于thread一开始运行子类的run方法,如果子类没有重写run方法,则会去找父类的run方法,父类的run方法会运行target.run方法,也就是runnable方法,如果子类重写了thread的run方法,则直接调用子类的run方法