1、线程创建:
两种方式
《1》Thread thread=new Thread(){
public void run(){//定义匿名内部类,重写run 方法;使用监听器用时也经常有定义匿名内部类子类,重写父类方法。
}
}
thread1.start();
《2》Thread thread2=new Thread(new Runnable(){
public void run(){
}
});
thread2。start();
方法2更加符合面向对象编程思想。
2、注意:下面代码会输出什么
new Thread(
new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Runnable"+Thread.currentThread().getName());
}
}
}
){
public void run(){
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("1"+Thread.currentThread().getName());
}
}
}.start();
上面代码new Thread()创建了一个进程,一方面子类重写了父类的run方法,而父类的run方法会去找Runnable接口。由于父类方法已被覆盖了,所以会直接执行下面的代码,输出1Thread0.