2020-10-30

程序,进程与线程之间关系

程序:指用代码编写的完成某种命令的静态功能模块。
进程:指一段正在运行的程序,会有自身的产生,存在与消亡,有自己的生命周期。一个程序最少有一个进程。
线程:是最小cpu执行单位,每个进程至少有一个线程。

  1. 若一个程序在同一时间并行执行多个线程,就是支持多线程。
  2. 每一个线程都拥有独立的运行栈和程序计数器。
  3. 多个线程共享相同的内存地址(方法区和堆)

Thread()类

通过对象调用start()方法,开启多线程,重写run()方法,启动当前线程。

Thread类常用的方法

yield():释放当前CPU的使用权。
join():在线程a中调用线程b的join(),此时线程a阻塞,直到线程b完全执行完后,线程a才结束阻塞状态。

Runnable()接口使用

  1. 创建一个Runnable接口的实现类。
  2. 实现类中重写Runnable接口的抽象方法:run()方法。
  3. 创建实现类的对象
  4. 将此对象作为参数传递到Thread类中的构造方法中,并创建Thread类的对象。
  5. 通过Thread类的对象调用start()方法。

补充

一个java程序java.exe。其实至少有3个线程,main()主线程,gc()垃圾回收线程,(守护线程),异常处理线程。

线程的生命周期

新建,就绪,运行,阻塞,死亡
2020-10-30

线程通信的三个方法

wait(),notify(),notifyAll()

  • 三个方法必须放在同步代码块或者同步方法中
  • 三个方法定义在object类中
  • 调用者必须是用户代码块或者同步方法中的同步监视器。

同步方法总结:

同步方法涉及到同步监视器,只是不需要我们显示的声明。
非静态的同步方法,同步监视器是:this
静态的同步方法,同步监视器是当前类的本身