程序、进程、线程

  • 程序
    • 静态概念:程序员开发的应用软件
    • 开发过程:源代码 -> 打包封装 -> 应用软件
    • 源代码、应用软件都可以称为程序
  • 进程
    • 动态概念:进程就是运行程序
    • 现代的操作系统都支持多进程模式运行
    • 操作系统能同时执行多个任务
  • 线程

    • 进程是线程的容器

      串线、并行、并发

  • 串线

    • 多个操作在同一个线程内按顺执行,在工作模式下也叫同步
    • 在执行当前操作,下一个操作就必须等待,等待状态也叫阻塞
  • 并行、并发
    • 异步模式进行操作,不同线程内的操作互相不需要等待
    • 并行:多个CPU同时执行多个任务
    • 并发:一个CPU同时执行多个任务

sleep和wait() 的区别

  • sleep() 进入等待状态不释放锁
  • wait() 进入等待状态释放锁 | | sleep() | wait() | | —- | —- | —- | | 声明位置 | Object类 | Thread类 | | 影响 | 影响当前线程
    不释放锁,进入休眠模式 | 影响当前任务
    释放锁,进入等待模式 | | 性质 | 静态方法 | 非静态方法 | | 同步要求 | 不要求在同步上下文中 | 必须在同步上下文中使用 | | 应用场景 | 用来让线程暂停一段时间 | 用于线程间通信 |

同步方法和同步代码块

都用到了synchronize 同步方法:作用于整个方法体 静态:类.class、非静态:this 同步代码块:作用于代码块内