为什么要使用线程?
主线程是指进程拥有的线程,或叫U线程,Java中默认情况下一个进程只有一个线程,这个线程就是主线程。主线程不能执行耗时的任务,
所以在一些耗时处理时,就得使用子线程。Android沿用了Java的线程模型,从Android3.0开始系统要求网络访问也必须在子线程中进
行,否则网络访问将会失败并抛出NetworkOnMainThreadException异常。在Android里如果主线程被执行耗时任务导致阻塞后还会造
成ANR的发生
java中提供了两种多线程 一种是Thread类 另外一种是Runnable接口
Thread的简单使用
//继承Thread类
class MyThread extends Thread {
//实现run方法
@Override
public void run() {
//模拟网络延迟3秒
try {
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("收到的值","mmmmmm");
}
}
//调用使用子线程
MyThread myThread = new MyThread();
//就绪状态
myThread.start();
Runable接口的简单使用
//实现Runnable接口
class MyRunnable implements Runnable{
@Override
public void run() {
try {
Thread.sleep(3000);
Log.i("Runnable","sssss");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//调用线程
MyRunnable myRunnable=new MyRunnable();//创建Runnable类的对象
Thread thread=new Thread(myRunnable);//将Runnable对象作为Thread 创建的新线程
//就绪状态
thread.start();
还有一种方式是把第一种和第二种相结合了 (这种也是最常用的,两个的整合叫做匿名线程
//匿名线程
new Thread(new Runnable() {
@Override
public void run() {
//耗时任务
try {
Thread.sleep(3000);
Log.i("匿名线程","3333");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();