进程是表示资源分配的基本单位,又是调度运行的基本单位。线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。
理解:对于WORD,每次启动一个WORD之后实际上都是在操作系统上分配一个进程。线程实际上就是在进程的基础上进一步划分,从WORD来看,可以把拼写检查当做一个线程进行处理。当然,会同时存在多个线程。线程消失进程不会消失,但是进程消失,线程一定会消失。Java中多线程的实现:1)继承Thread类;2)实现Runnable接口1)Thread类是在java.lang包中定义的,一个类只要继承了Thread类,此类就称为多线程操作类。在Thread子类中,必须明确的覆写Thread类中的run()方法,此方法为线程的主体。
多线程语法定义:class 类名称 extends Thread{ //继承Thread类属性; //类中定义属性方法; //类中定义方法//覆写Thread类中的run()方法,次方法是线程的主体public void run(){线程主体;}}注意:java.lang包会在程序运行的时候自动导入,所以无需手工编写import语句。如果要想启动一个线程还必须使用Thread中定义的start()方法2)在java中可以通过实现Runnable接口的方式实现多线程,Runnable接口中只定义了一个抽象方法:public void run();
通过Runable接口实现多线程:class 类名称 implements Runnable{//实现Runnable接口属性;//类中定义属性方法;Public void run(){线程主体;}}但是要启动线程的话,则肯定是依靠Thread类。两者之间的联系:1、Thread类值Runnable接口的子类:Thread类的定义public class Thread extends Object implements Runnable2、使用Thread类的操作多线程的时候无法达到资源共享的目的,而使用Runnable接口实现的多线程操作可以实现资源共享。结论:实现Runnable接口比继承Thread有如下优点:1)适合多个相同程序代码的线程去处理同一个资源;2)可以避免由于单继承局限所带来的影响;3)增强了程序的健壮性,代码能够被多个线程共享,代码和数据时独立的。多线程在操作中有一个固定的操作状态:1) 创建状态:准备好一个多线程的对象:Thread t=new Thread()2) 就绪状态:调用了start()方法,等待CPU进行调度3) 运行状态:执行run()方法4) 阻塞状态:暂时停止执行,可能将资源交给其他线程使用5) 终止状态:线程执行完毕,不再使用了