程序、进程、线程
- 程序
- 静态概念:程序员开发的应用软件
- 开发过程:源代码 -> 打包封装 -> 应用软件
- 源代码、应用软件都可以称为程序
- 进程
- 动态概念:进程就是运行程序
- 现代的操作系统都支持多进程模式运行
- 操作系统能同时执行多个任务
线程
串线
- 多个操作在同一个线程内按顺执行,在工作模式下也叫同步
- 在执行当前操作,下一个操作就必须等待,等待状态也叫阻塞
- 并行、并发
- 异步模式进行操作,不同线程内的操作互相不需要等待
- 并行:多个CPU同时执行多个任务
- 并发:一个CPU同时执行多个任务
sleep和wait() 的区别
- sleep() 进入等待状态不释放锁
- wait() 进入等待状态释放锁
| | sleep() | wait() |
| —- | —- | —- |
| 声明位置 | Object类 | Thread类 |
| 影响 | 影响当前线程
不释放锁,进入休眠模式 | 影响当前任务
释放锁,进入等待模式 | | 性质 | 静态方法 | 非静态方法 | | 同步要求 | 不要求在同步上下文中 | 必须在同步上下文中使用 | | 应用场景 | 用来让线程暂停一段时间 | 用于线程间通信 |
同步方法和同步代码块
都用到了synchronize 同步方法:作用于整个方法体 静态:类.class、非静态:this 同步代码块:作用于代码块内