没有合适的资源?快使用搜索试试~ 我知道了~
Android开发中的多线程编程技术
4星 · 超过85%的资源 需积分: 9 146 下载量 198 浏览量
2012-12-05
13:25:28
上传
评论 1
收藏 486KB PDF 举报
温馨提示
试读
17页
Android开发中的多线程编程技术介绍 通过一个例子,java多线程 和 android 多线程 比较,详细解释了android多线程如何编写和原理
资源推荐
资源详情
资源评论
多线程这个令人生畏的 “ 洪水猛兽 ” , 很多人谈起多线程都心存畏惧 。 在 Android 开发过程
中 , 多线程真的很难吗 ? 多线程程序的 “ 麻烦 ” 源于它很抽象 、 与单线程程序运行模式不同
,
但只要掌握了它们的区别 , 编写多线程程序就会很容易了 。 下面让我们集中精力开始学习吧 !
多线程案例 —— 计时器
我在给我的学生讲多线程的时候都会举一个计时器的案例 , 因为计时器案例是多线程的
经典应用。
这个案例中,屏幕启动之后,进入如图 8-1 所示的界面。
屏幕上有一个文本框用于显示逝去的时间 , 此外还有一个 “ 停止计时 ” 按钮 。 案例的用
例图如图 8-2 所示。
▲ 图 8-1 计时器界面
▲ 图 8-2 计时器用例图
能够在屏幕上 “ 实时地显示 ” 时间的流逝 , 单线程程序是无法实现的 , 必须要多线程程
序才可以实现 , 即便有些计算机语言可以通过封装好的类实现这一功能 , 但从本质上讲这些
封装好的类就是封装了一个线程。
综上所述,完成本案例用到的知识及技术如下:
1) 进程和线程的概念 ;
2)Java 中的线程,在 Java 中创建线程的方式 ;
3)Android 中的线程,包括: Message 、 Handler 、 Looper 和 HandlerThread 等概念。
线程究竟是什么 ? 在 Windows 操作系统 出现之前,个人计算机上的 操作系统 都是单任务
系统,只有在大型计算机上才具有多任务和分时设计。 Windows 、 Linux 操作系统的出现,
把原本只在大型计算机才具有的优点,带到了个人计算机系统中。
进程概念
一般可以在同一时间内执行多个程序的操作系统都有进程的概念 。 一个进程就是一个执
行中的程序 , 而每一个进程都有自己独立的一块 内存 空间 、 一组系统资源 。 在进程的概念中
,
每一个进程的内部数据和状态都是完全独立的。在 Windows 操作系统下我们可以通过
〈 Ctrl+Alt+Del 〉 组合键查看进程 , 在 UNIX 和 Linux 操作系统下是通过 PS 命令查看进程的
。
打开 Windows 当前运行的进程,如图 8-3 所示。
▲ 图 8-3 Windows 操作系统进程
在 Windows 操作系统中一个进程就是一个 exe 或 dll 程序 , 它们相互独立 , 互相也可以
通信,在 Android 操作系统中进程间的通信应用也是很多的。
线程概念
多线程指的是在单个程序中可以同时运行多个不同的线程 , 执行不同的任务 。 多线程意
味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。
线程与进程相似 , 是一段完成某个特定功能的代码 , 是程序中单个顺序的流控制 。 但与
进程不同的是 , 同类的多个线程共享一块 内存 空间和一组系统资源 , 所以系统在各个线程之
间切换时 , 资源占用要比进程小得多 , 正因如此 , 线程也被称为轻量级进程 。 一个进程中可
以包含多个线程 。 图 8-4 所示是计时器程序进程和线程之间的关系 , 主线程负责管理子线程
,
即子线程的启动、挂起、停止等操作。
▲ 图 8-4 进程和线程关系
Java 中的线程
Java 的线程类是 java.lang.Thread 类。当生成一个 Thread 类的对象之后,一个新的
线程就产生了。 Java 中每个线程都是通过某个特定 Thread 对象的方法 run() 来完成其操作
的,方法 run( ) 称为线程体。
下面是构建线程类几种常用的方法:
public Thread()
public Thread(Runnable target)
public Thread(Runnable target, String name)
public Thread(String name)
参数 target 是一个实现 Runnable 接口的实例,它的作用是实现线程体的 run() 方法
。
目标 target 可为 null , 表示由本身实例来执行线程 。 name 参数指定线程名字 , 但没有指定
的构造方法,线程的名字是 JVM 分配的,例如 JVM 指定为 thread-1 、 thread-2 等名字。
1 、 Java 中的实现线程体方式 1
在 Java 中有两种方法实现线程体:一是继承线程类 Thread ,二是实现接口 Runnable
。
下面我们先看看继承线程类 Thread 方式。
如果采用第 1 种方式 , 它继承线程类 Thread 并重写其中的方法 run() , 在初始化这个类
实例的时候,目标 target 可为 null ,表示由本实例来执行线程体。由于 Java 只支持单重
继承,用这种方法定义的类不能再继承其他父类,例如代码清单 8-1 ,完整代码请参 考
chapter8_1 工程中 chapter8_1 代码部分。
【代码清单 8-1 】
public class chapter8_1 extends Thread {
boolean isRunning = true ;
int timer = 0 ;
/**
* 线程体代码
*/
@Override
public void run() {
while (isRunning) {
try {
Thread.currentThread().sleep( 1000 );
timer ++;
System.out.println( " 逝去了 " + timer + " 秒 " );
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main( String [] args) {
chapter8_1 t1 = new chapter8_1();
t1.start();
System.out.println( " 计时器启动 ..." );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
try {
String line = br.readLine();
if (line.equalsIgnoreCase( "1" )) {
t1.isRunning = false ;
/*t1.stop();*/
}
} catch (IOException e) {
e.printStackTrace();
}
}
剩余16页未读,继续阅读
hsfkm123
- 粉丝: 2
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页