Android多线程编程

来源:互联网 发布:mac ps窗口无法拖动 编辑:程序博客网 时间:2024/05/17 22:10

Java 5引入了一个多线程的新的写法,Future,Callable,Executor,三者的关系及用法如下:
Callable:
它是一个接口,用来产生数据,类似于Runnable接口,
在使用时,必须写一个类实现Callable接口,然后复写call()方法,在call里面对数据进行操作,并返回

public class SunnyTestTask implements Callable<String>{private String name;public SunnyTestTask(String value){ this.name = value;}public String call(){ return name;}}

Executor:
Executor,相当于一个管理类,用于管理所有并发的线程,即线程池,我们可以通过它来创建指定的线程池,

注意:线程池并不是创建越多越好,因为线程的开启与销毁,都要消耗内存。

然后开辟的线程池统一由ExecutorService服务来管理。

ExecutorService service = Executors.newFixedThreadPool(2);

Future:
是用来接收实现Callable接口类所产生的数据的。Future类的实例不用new,
通过服务来提交任务所得到,这里的服务即ExecutorSevice;

SunnyTestTask task1 = new SunnyTestTask("Sunny1");SunnyTestTask task2 = new SunnyTestTask("Sunny2");Future<String> mFuture1 = service.submit(task1);Future<String> mFuture2 = service.submit(task2);Log.i("Sunny","task1:"+mFuture1.get()+"\ntask2:"+mFuture2.get());

以上就是Future,Callable,Executor三者的关系及用法。。。

1 0