**a:继承java.lang.Thread类,重写run方法
class MyThread extends Thread{
public void run(){
}
}
b:实现Runnable接口,重写run方法
class MyThread implement Runnable{
public void run(){
//重写run方法
}
}
对于线程的启动,并不是直接调用run方法,而是调用start方法,启动线程,执行run方法。
线程中的异常,每个线程的异常都是线程自己的事情,不影响其他线程的执行
**
匿名内部类
1、继承Thread
new Thread(){
public void run(){
for (int i = 0; i < 100; i++) {
System.out.println("ni1"+i);
}
}
}.start();
2、实现Runnable
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("niRunnable"+i);
}
}
}).start();
对比:
Runnable:还可以继承其他类,实现其他接口
Thread:不能继承其他类
b:Runnable:启动步骤稍复杂
Thread:编写简单
c:多个线程有数据共享时使用Runnable