Android线程池使用


标签: 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. }  

你可能感兴趣的:(android,线程池)