Android线程池使用
2016-04-10 21:23
375 查看
Android 线程池
2015-01-06 12:38208人阅读
评论(0)
收藏
举报
本文章已收录于:
分类:
Android(46)
作者同类文章X
版权声明:本文为博主原创文章,未经博主允许不得转载。
前一篇博文讲了Android线程的创建和启动,创建有继承Thread类、实现Runnable接口、实现Callable接口等三种方法,启动都是调用了Start()方法来启动的,其实还可以用线程池来启动线程。
系统启动一个新线程的成本是比较高的,因为它涉及与操作系统交互。在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。
效果图
ThreadPoolActivity.java
[java]
view plain
copy
print?
package com.example.androidthreadpool;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class ThreadPoolActivity
extends Activity
{
TextView txtShow1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread_pool);
txtShow1=(TextView)findViewById(R.id.txtShow1);
//创建一个线程池
ExecutorService pool1=Executors.newFixedThreadPool(2);
//将一个Runnable对象传递给线程池
FirstThread ft=new FirstThread();
pool1.submit(ft);
//将一个Callable对象传递给线程池
FutureTask<String> task=new FutureTask<String>(new SecondThread());
pool1.submit(task);
//创建一个具有延迟启动线程功能的线程池
ScheduledExecutorService pool2=Executors.newScheduledThreadPool(2);
//延迟1秒启动线程
pool2.schedule(ft, 1, TimeUnit.SECONDS);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.thread_pool, menu);
return true;
}
//实现Runnable接口创建线程类
public class FirstThread
implements Runnable
{
@Override
public void run()
{
txtShow1.append(Thread.currentThread().getName()+" implements Runnable"+"\n");
}
}
//使用Callable和Future创建线程类
public class SecondThread
implements Callable<String>
{
public String call()
{
txtShow1.append(Thread.currentThread().getName()+" implements Callable"+"\n");
return " implements Callable";
}
}
}
相关文章推荐
- 解决win和ubuntu12.10下adb devices 无法检测android手机问题
- Android 博客周刊13期
- Android学习(19) -- 数据存储之File (简单登录保存用户名和密码)
- Android实现 画几何图形总结
- Android 开发常见问题汇总
- Android完全退出应用程序
- 使用字符串资源
- 提高你使用android studio的效率之键盘篇
- android自定义view属性
- TextView高级使用:SpannableString
- android自定义view
- Android开发学习之路-Android Studio真神器!
- android 布局属性(alignBaseLine在最后有详细解释)
- Android 联系人数据库介绍以及对联系人的基本操作
- Android选择通讯录姓名和手机号信息
- RxAndroid项目实践-使用RxJava响应式编码实现知乎日报的欢迎界面
- Android - 十分钟理解手机适配 与 lib工程生成包
- 常用的布局和View常用属性
- 【Android基础】消息处理机制原理
- Android 第十二天重置版_版本控制