1、什么是进程:是指运行中的应用程序,每一个进程都有自己独立的内存空间,一个应用程序可以同时启动多个进程,(静态)比如(IE,JVM)
什么是线程:是指进程中的一个执行流程,有时有称之为执行情景,一个进程有多个线程组成(动态)
进程与线程的主要区别:
每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同
一块内存和系统资源
2、线程的启动与创建:
创建线程的两种方式:(1)extends java.lang.Thread
(2)实现Runnable
2.1扩展java.lang.Thread
(1)Thread类代表线程类,它主要的两个方法是:
(2)run():包含线程运行时所执行的代码
(3)start():用于启动线程
(4)用户的线程类只需要继承Thread类,override Thread类的run()方法即可。
(5)Thread.currentThread()返回当前正在执行这行代码的线程的引用
3、线程创建的步骤:
(1)自定义线程类继承Thread类
(2)覆盖Thread类中的run()方法
(3)创建线程对象。
(4)调用start()方法启动线程。
第一种
定义线程类实现Runnable接口
Thread myThread = new Thead(target)//target为Runnable接口类型。
Runnable中只有一个方法:
public void run(); 用以定义线程运行体。
使用Runnable接口可以为多个线程提供共享的数据。
在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法:
public static Thread currentThread() 获取当前线程的引用。
第二种
可以定义一个Thread的子类并重写其run方法如:
class MyThread extends Thead {
public void run(){…}
}
然后生成该类的对象:
MyThread myThread=new MyThead(…)
4、线程的实际应用:
(1)主线程与用户自定义线程并发执行。
(2)多个线程共享同一个对象的实例变量
(3)不要随便覆盖Thread类中的start()方法
如果一定要覆盖start()方法,那么就首先调用super.start()方法。
(4)一个线程只能被启动一次
5、实现Runnable接口
(1)Java不允许一个类继承多个类,因此一旦一个类继承了Thread类,就不能再继承其他类。
为了解决这一个问题,Java提供了java.lang.Runnable接口,它有一个run()方法。
public void run();
6、线程的状态装换
(1)新建状态(new)
(2)就绪状态
(3)运行状态
(4)阻塞状态
(5)死亡状态