Android有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口。
创建线程:
1.继承Thread类:
public class ThreadActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.thread);
MyThread thread = new MyThread();
thread.start();
}
public class MyThread extends Thread {
@Override
public void run() {
System.out.print("thread run");
}
}
}
2.实现Runnable接口:
public class ThreadActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.thread);
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
}
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.print("runnable run");
}
}
}
可以看出,实现Runnable接口的方法最终也是需要通过Thread类的start方法来开启线程。
3.简单实现:
//无参构造函数,直接重写run方法创建Thread对象并调用start方法
new Thread() {
@Override
public void run() {
System.out.print("Thread run");
}
}.start();
//带Runnable参数的构造函数,创建Thread对象并调用start方法
new Thread(new Runnable() {
@Override
public void run() {
System.out.print("Runnable run");
}
}).start();
}
可以直接写在Oncreate方法中事实上,查看源码我们可以看到Thread类本身就实现了Runnable接口
public class Thread implements Runnable
两种方式对比:
理论上只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是Java中一个类只能继承一个父类,这是这种方式的局限性,后者只需要实现一个接口而已,Java中可以实现多个接口。