线程的基本概念
如何理解线程和进程呢,进程是进行资源分配和调度的基本单位。我们打开windows的任务管理器,很直观的可以看到各种各样的进程。而线程也就是每一个进程所要完成的小任务。必须一个QQ程序,可以和多个用户聊天。
任务管理器
不过有一个写安卓程序的有一个很容易犯的问题,这里需要指出,一个安卓应用程序并不是一个进程。在Android的设计中,一个应用默认有一个(主)进程。但是我们通过配置可以实现一个应用对应多个进程。打算先把Java的多线程技术整理完,再来根据事例来整理安卓的多进程。而线程就是进程中的小任务,一个正在运行的进程最少有一个运行的线程(主线程)。
Java中如何实现多线程
在Java中实现多线程一共有两种方法,一种是继承Thread类,一种是实现Runnable接口。
需要指出的是Thread类其实就是实现了Runable接口,他的类结构如下所示:
public class Thread implements Runnable
具体要选择那一种做法,看自己的需求,因为在Java中是没有多继承这个概念的,为了支持多继承,我们可以实现Runnable接口,就可以一边实现多线程,一边继承了。
我们先来使用第一种方法
这个代码很简单,就不直接写代码了,从书上复制粘贴过来,我们来看运行结果
之所以强调运行结果,是因为想引出多线程的一个特点为就是调用的随机性,代码运行的结果与执行顺序或调用顺序是无关的。如果按照我们之前的编程思维,"MyThread"的打印结果应该在“运行结束”的前面,这一点很重要。当我们调用线程对象的run()方法时。这个过程其实就是让系统安排一个时间来调用Thread中的run()方法,也就是使线程得到运行,启动一个线程,个有异步执行效果。而不是在main主线程中来调用run()方法,这里有点儿绕,但是,如果理解了,可以对多线程有更多的认识。
当欲创建的线程类已经有一个父类了,这时就不能再继承自Thread类了,所以就需要实现Runnable接口。
可以我们定义了这个类,最终是要使用的,如何使用这个类呢?
总结
使用继承Thread类的方法开发多线程程序是有局限性的,因为Java是单继承的,所以为了改变这个限制,可以使用实现Runnable接口的方式来实现多线程技术。
网友评论