一.线程的基本概念
1、进程是指运行中的程序,比如使用qq就是启动一个继承就会为该进程分配空间。进程是程序的一次执行过程或者是正在运行的一个程序。
2.线程是由进程创建的,是进程的一个实体,一个进程可以拥有多个线程。
(1)单线程:同一时刻,指允许执行一个线程。
(2)多线程:同一时刻,可以执行多个线程,比如一个QQ进程可以同时打开多个聊天窗口,一个迅雷进程,可以下载多个文件。
(3)并发:同一时刻,多个任务交替执行
(4)并行:同一时刻,多个任务同时执行。多核CPU可以实现并行。
(5)使用一个线程的过程可以分为以下4个步骤:的代码,即期望完成的功能。
第一步:定义一个线程,同时指明这个线程所要执行
第二步:创建线程对象。
第三步:启动线程
第四部:终止线程。
(6)定义一个线程类通常有两种方法,分别是继承j ava.lang.Thread类和实现java.lang.Runnable接口。
3.使用继承Thread类创建线程的方法:
(1)创建线程时继承Thread类和重写Thread类中的run()方法,编写线程执行体。
Thread类的run方法时线程要执行操作任务的方法,所以要执行的操作代码都需要写在run()方法中,并通过start()方法来启动线程。
4.使用Runnable接口创建线程
(1)使用继承Thread类的方式创建线程简单,但有一个缺点,如果定义的类已经继承其他无法在继承Thread类。使用Runnable接口可以解决以上问题。
--》Runnable接口中声明了一个run()方法,即public void run()。
--》一个类可以通过实现Runnable接口并实现run()方法完成线程的所有活动,已实现的run()方称为该对象的线程体。
-》任何一个实现Runnable接口的对象都可以作为
一个线程的目标对象。
5.比较两种创建线程的方式。
(1)继承Thread类编写简单,可直接操作线程,适用于单线程。
(2)实现Runnaable类接口避免单继承局限性和便于共享资源。
注意:推荐使用实现Ruabble接口方法创建线程。
6.使用Thread类创建线程支持多线程编程,该类提供大量的方法来控制和操作线程,常用方法如下;
long getId()返回线程的标识符。
String getName()返回线程的名称
int getPriority()返回线程的优先级。
Thread.State getState()返回线程的状态。
void join()等待该线程终止
void interrupt()中断线程
void yeild()暂停当前正在执行的线程对象,并执行其他线程。