Android线程池使用
来源:互联网 发布:玉和颜去黑头 知乎 编辑:程序博客网 时间:2024/05/28 14:57
标签: Android 线程池
2015-01-06 12:38208人阅读评论(0) 收藏 举报
本文章已收录于:
分类:
作者同类文章X
版权声明:本文为博主原创文章,未经博主允许不得转载。
前一篇博文讲了Android线程的创建和启动,创建有继承Thread类、实现Runnable接口、实现Callable接口等三种方法,启动都是调用了Start()方法来启动的,其实还可以用线程池来启动线程。
系统启动一个新线程的成本是比较高的,因为它涉及与操作系统交互。在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。
效果图
ThreadPoolActivity.java
- 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 ThreadPoolActivityextends 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 FirstThreadimplements Runnable
- {
- @Override
- public void run()
- {
- txtShow1.append(Thread.currentThread().getName()+" implements Runnable"+"\n");
- }
- }
- //使用Callable和Future创建线程类
- public class SecondThreadimplements Callable<String>
- {
- public String call()
- {
- txtShow1.append(Thread.currentThread().getName()+" implements Callable"+"\n");
- return " implements Callable";
- }
- }
- }
0 0
- Android线程池使用
- Android线程池使用
- Android 线程池使用
- Android线程池使用
- android 线程池使用
- Android线程池使用
- Android线程池的使用
- Android线程池的使用
- Android线程池使用详解
- Android 线程池的使用
- Android线程池使用心得
- Android线程池的使用
- Android 线程池的使用
- Android 线程池的使用
- 【Android】Android中线程池使用ExecutorService
- Android线程,线程池使用及原理博文参考
- Android线程,线程池使用及原理博文参考
- Android线程,线程池使用及原理博文参考
- 【异或】HDU1287破译密码
- 解决win和ubuntu12.10下adb devices 无法检测android手机问题
- Filter介绍
- 丢手帕问题
- MFC-PlaySound
- Android线程池使用
- 【转】程序员技术练级攻略
- IO-字节流
- React-Native Android 环境搭建
- Android之ListView的使用
- LeetCode *** 6. ZigZag Conversion
- Androd用WebView播放gif动画
- 嵌入式Linux使用Busybox init进程启动过程分析
- 跳台阶问题-----递归算法