Java 多线程
程序.进程和多任务
- 程序(program) 是对数据描述与操作的代码的集合,是应用程序执行的脚本。
- 进程(process) 是程序的一次执行过程,是系统运行程序的基本单位。程序是静态的,进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。
- 多任务(multi task) 在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每个任务对应一个进程。
线程
- 线程是一个独立的执行流,是进程内部的一个独立执行单元,相当于一个子程序
- 一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。
如何创建多线程
- 创建 java.lang.Thread 类的子类,重写该类的 run 方 法
- 创建 java.lang.Runnable 接 口的实现类,实现接口中的 run 方法(用的更多)
Runnable 接口与 Thread 类之间的区别
- Runnable 接口必须实现 run 方法,而 Thread 类中的 run 方法是一个空方法,可以不重写
- Runnable 接口的实现类并不是真正的线程类,只是线程运行的目标类。要想以线程的方式执行 run 方法,必须依靠 Thread 类
- Runnable 接口适合于资源的共享
多线程的四种状态
- 新建(New)
- 可执行(Runnable)
- 运行(Running)
- 阻塞(Blocking)
- 死亡(Dead)
状态之间的相互转化可执行<—->阻塞
- wait()方法:
- 中断方法的执行,使本线程等待,暂时让出 cpu 的使用权,并允许其他线程使用这个同步方法。
- notify()方法:
- 唤醒由于使用这个同步方法而处于等待线程的 某一个结束等待
- notifyall()方法:
- 唤醒所有由于使用这个同步方法而处于等待的线程结束等待