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();

  }

}
上一篇下一篇

猜你喜欢

热点阅读