android线程池

线程与进程

进程是一个独立的运行环境,它可以被看作一个程序或者一个应用。
线程是在进程中执行的一个路径。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。

不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。

使用线程池的原因

多个线程频繁地创建销毁耗时,影响效率,占用了大量资源,缺乏统一管理.
线程池的好处:
1,创建线程池,统一管理线程,避免资源浪费.
2对线程进行复用,线程在执行完任务后不会立刻销毁,而会等待另外的任务,这样就不会频繁地创建、销毁线程和调用GC。提高了效率.

public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory) {
        ...
    }

corePoolSize: 该线程池中核心线程的数量。

maximumPoolSize:该线程池中最大线程数量。(区别于corePoolSize)

keepAliveTime:从字面上就可以理解,是非核心线程空闲时要等待下一个任务到来的时间,当任务很多,每个任务执行时间很短的情况下调大该值有助于提高线程利用率。注意:当allowCoreThreadTimeOut属性设为true时,该属性也可用于核心线程。

unit:上面时间属性的单位

workQueue:任务队列,后面详述。

threadFactory:线程工厂,可用于设置线程名字等等,一般无须设置该参数。

//创建基本线程池
        final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3,5,1,TimeUnit.SECONDS,
                new LinkedBlockingQueue<Runnable>(100));

FixedThreadPool (可重用固定线程数)

 //创建fixed线程池

  final ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);

CachedThreadPool (按需创建)

//创建Cached线程池

 final ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

SingleThreadPool(单个核线的fixed)

 //创建Single线程池
 final ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

ScheduledThreadPool(定时延时执行)

//创建Scheduled线程池
  final ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

自定义的PriorityThreadPool(队列中有优先级比较的线程池)

 //创建自定义线程池(优先级线程)
final ExecutorService priorityThreadPool = new ThreadPoolExecutor(3,3,0, TimeUnit.SECONDS,new PriorityBlockingQueue<Runnable>());

多线程编程的好处是什么?

在多线程程序中,多个线程被并发的执行以提高程序的效率,CPU不会因为某个线程需要等待资源而进入空闲状态。

开启线程方法
一、继承 Thread 类,扩展线程。
二、实现 Runnable 接口。

多线程实现
1)Activity.runOnUiThread(Runnable)

2)View.post(Runnable) ;View.postDelay(Runnable , long)

3)Handler

4)AsyncTask

activity.runOnUiThread(new Runnable() {               
            @Override 
            public void run() {  
                // TODO Auto-generated method stub  
            	int i = 30;
            	textView.setText(""+i+" s");
            	}
            }  
        });  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值