java android 开启子线程的三种方式
2019-04-17 本文已影响0人
鹅鹅鹅曲项向天歌呀
1、创建线程池管理(推荐使用)
2、集成Thread
3、实现Runnable接口
1、创建线程池管理(推荐使用!!!)
理由:
1、为了减少创建和销毁线程的次数,让每个线程可以多次使用,可根据系统情况调整执行的线程数量,防止消耗过多内存,所以我们可以使用线程池.
2、新线程的创建,会带来时间的开销,通过线程池可以节约开辟新线程的时间,提高响应速度,同时也便于对线程进行管理。
3、线程池统一管理线程资源,避免频繁的删除/创建线程带来的资源消耗;
4、线程池可以统计资源调用情况;
线程池的创建以及使用:
/**
* 线程池
*/
private static final Executor threadExecutor = new ThreadPoolExecutor( 2, 4, 30,
TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>(10)
);
/**
* 使用
*/
threadExecutor.execute(new Runnable() {
@Override
public void run() {
final long id = Thread.currentThread().getId();
stringBuilder.append("Thread ID="+id+"\n");
runOnUiThread(new Runnable() {
@Override
public void run() {
mMainTextView.setText(stringBuilder);
}
});
}
});
2、集成Thread类
这是一个匿名内部类的写法!!!
new Thread(new Runnable() {
@Override
public void run() {
final long id = Thread.currentThread().getId();
stringBuilder.append("Thread ID="+id+"\n");
runOnUiThread(new Runnable() {
@Override
public void run() {
mMainTextView.setText(stringBuilder.toString());
}
});
}
}).start();
3、实现Runnable接口
public class MyThread2 implements Runnable {//实现Runnable接口
public void run(){
//重写run方法
}
}
public class Main {
public static void main(String[] args){
//创建并启动线程
MyThread2 myThread=new MyThread2();
Thread thread=new Thread(myThread);
thread().start();
//或者 new Thread(new MyThread2()).start();
}
}