标签: Android 线程池 208人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: Android (46) 作者同类文章 X

前一篇博文讲了Android线程的创建和启动,创建有继承Thread类、实现Runnable接口、实现Callable接口等三种方法,启动都是调用了Start()方法来启动的,其实还可以用线程池来启动线程。

系统启动一个新线程的成本是比较高的,因为它涉及与操作系统交互。在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。

效果图

Android线程池使用_第1张图片

ThreadPoolActivity.java

[java] view plain copy print ?
  1. package com.example.androidthreadpool;
  2. import java.util.concurrent.Callable;
  3. import java.util.concurrent.ExecutionException;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6. import java.util.concurrent.FutureTask;
  7. import java.util.concurrent.ScheduledExecutorService;
  8. import java.util.concurrent.TimeUnit;
  9. import android.os.Bundle;
  10. import android.app.Activity;
  11. import android.view.Menu;
  12. import android.widget.TextView;
  13. public class ThreadPoolActivity extends Activity
  14. {
  15. TextView txtShow1;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState)
  18. {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_thread_pool);
  21. txtShow1=(TextView)findViewById(R.id.txtShow1);
  22. //创建一个线程池
  23. ExecutorService pool1=Executors.newFixedThreadPool(2);
  24. //将一个Runnable对象传递给线程池
  25. FirstThread ft=new FirstThread();
  26. pool1.submit(ft);
  27. //将一个Callable对象传递给线程池
  28. FutureTask<String> task=new FutureTask<String>(new SecondThread());
  29. pool1.submit(task);
  30. //创建一个具有延迟启动线程功能的线程池
  31. ScheduledExecutorService pool2=Executors.newScheduledThreadPool(2);
  32. //延迟1秒启动线程
  33. pool2.schedule(ft, 1, TimeUnit.SECONDS);
  34. }
  35. @Override
  36. public boolean onCreateOptionsMenu(Menu menu) {
  37. // Inflate the menu; this adds items to the action bar if it is present.
  38. getMenuInflater().inflate(R.menu.thread_pool, menu);
  39. return true;
  40. }
  41. //实现Runnable接口创建线程类
  42. public class FirstThread implements Runnable
  43. {
  44. @Override
  45. public void run()
  46. {
  47. txtShow1.append(Thread.currentThread().getName()+" implements Runnable"+"\n");
  48. }
  49. }
  50. //使用Callable和Future创建线程类
  51. public class SecondThread implements Callable<String>
  52. {
  53. public String call()
  54. {
  55. txtShow1.append(Thread.currentThread().getName()+" implements Callable"+"\n");
  56. return " implements Callable";
  57. }
  58. }
  59. }

更多相关文章

  1. 【整理一点资料】 Andorid的进程和线程模型
  2. xamarin android异步更新UI线程
  3. 一篇文章带你了解 Android 消息机制的原理!
  4. 自己写的一套应用管理系统(包含一套app系统,一套后台web管理系统《
  5. Android Jni中使用线程及回调更新UI
  6. 如何在android的jni线程中实现回调
  7. 第二章 Android动态加载、热更新、热修复、插件化系列文章 之 认
  8. Android,Thread+Handler 线程 消息循环

随机推荐

  1. 纪念一下坑爹的蓝牙扫描枪连接(Android外
  2. Android学习进阶路线导航线路(附源码)
  3. [置顶] Android自定义下拉刷新动画--仿百
  4. 【构建Android缓存模块】(二)Memory Cache
  5. Android消息循环机制分析
  6. android开发实战之做手机号和邮编查询小
  7. android保存数据的四种方法
  8. Android(安卓)API 实验记录 (二)
  9. 日本一恶意软件成功入侵270000部安卓手机
  10. android滑动切换屏幕(扒的是launcher2/wo