进程指一个内存中运行的应用程序,一个进程中可有多个线程。有独立的进程空间,进程中的数据存放空间(栈和堆)是独立的。
线程指进程中的一个执行任务(控制单元)。线程的对空间是共享的,栈空间是独立的。
创建线程有两种方法:
一.继承Thread类
1.定义类继承Thread
2.复写Thread类中的run方法
run方法:在本线程内调用Runnable对象的run方法,可以重复多次调用
3.调用线程的start方法。
start方法有两个作用:一是启动一个线程,二是调用Runnable对象的run方法。不能多次启动一个线程
特点:简单,但不能在继承其他类了,同分资源不共享
二.实现Runnable接口
1.定义类实现Runnable接口
2.子类覆盖Runnable接口的run方法
覆盖Runnable接口的run方法的原因:Thread类用于描述线程。该类就定义了一个功能用于存储线程要运行的代码,该存储功能就是run方法。也就是说,要将线程运行的代码存储于Thread类中的run方法中,所以要覆盖Runnable接口的run方法
3.通过Thread类建立线程对象
4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数
5.调用Thread类的start方法,开启线程并调用Runnable接口子类的run方法。
特点:多个线程共享一个目标资源,该类还可以继承其他类,也可实现其他接口。避免了单继承的局限性,所以建议使用