Java线程

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()方法:
    • 唤醒所有由于使用这个同步方法而处于等待的线程结束等待