300 行代码带你秒懂 Java 多线程!

作者:微信小助手

发布时间:2020-03-11T21:42:15

线程
线程的概念,百度是这样解释的:
线程(英语:Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(Lightweight Processes),但轻量进程更多指内核线程(Kernel Thread),而把用户线程(User Thread)称为线程。
1.1 线程与进程的区别
进程: 指在系统中正在运行 的一个应 用程序;程 序一旦运行就是进程;进程——资源分配的最小单位。
线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。
也就是,进程可以包含多个线程,而线程是程序执行的最小单位。
1.2 线程的状态
  • NEW: 线程刚创建
  • RUNNABLE: 在JVM中正在运行的线程,其中运行状态可以有运行中RUNNING和READY两种状态,由系统调度进行状态改变。
  • BLOCKED:线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行
  • WAITING : 等待状态
  • TIMED_WAITING: 调用sleep() join() wait()方法可能导致线程处于等待状态
  • TERMINATED: 线程执行完毕,已经退出
1.3 Notify和Wait :
Notify和Wait 的作用
首先看源码给出的解释,这里翻译了一下:
Notify: 唤醒一个正在等待这个对象的线程监控。如果有任何线程正在等待这个对象,那么它们中的一个被选择被唤醒。选择是任意的,发生在执行的酌情权。一个线程等待一个对象通过调用一个{@code wait}方法进行监视。