Android 线程问题
线程提高利用率,降低运行效率,加大cpu运行负载
一、创建线程
第一种方法 继承Thread类
class<类名> extends Thread{
@Override
public void run(){
//线程代码
}
在其他执行部分
<类名> <变量>=new <类名>();
<变量>.start();
第二种方法 继承接口类Runnable
class <> implements Runnable {
@Override
public void run(){
//线程代码
}
}
执行部分
<类名> <变量>=new <类名>();
new Thread(<变量>).start();//通过Thread启动Runnable线程
二、线程的一些方法
1、线程睡眠–就是让线程暂停使用 ,等过完休眠时间后,就进入线程等待环节
try{
Thread.sleep(时间);//线程睡眠时间 时间单位是毫秒
}catch(InterruptedException e){
e.printStackTrace();
}
2、线程让步 join() 和yield()
join()方法使调用该方法的线程在此之前执行完毕,也就是等待该方法的线程执行完毕后再往下继续执行。
tread1.start();
try {
//join():让这个先执行完成,其它线程的资源全部给这个线程
thread.join();;
} catch (InterruptedException e) {
e.printStackTrace();
}
yield():yield()方法只能让同优先级的线程有执行的机会,让正在执行的退回到准备状态,和其他线程再次执行资源争夺战,故线程让步不一定成功。
Thread.yield();
3、线程的同步问题
同步方法:synchronized ,该关键字修饰后,只能等到线程执行完成同步代码块或同步函数后,其他线程才有执行的可能。
同步代码块:
synchronized("任意数或者变量"){
//同步代码块
}
同步函数:
synchronized <返回类型> 方法名称([参数列表]) throws <异常序列>{
//同步函数代码
}
建议使用同步代码块而不是同步函数