Object类中wait带参方法和notifyAll方法与线程间通信

Object类中wait带参方法和notifyAll方法

进入到Timewaiting(计时等待)有两种方式
  1.使用sLeep(long m)方法,在毫秒值结束之后,线程睡醒进入到Runnable/Blocked状态
  2.使用wait(long m)方法, wait方法如果在毫秒值结束之后,还没有被notify唤醒,就会自动醒来,线程睡醒进入到Runnable/Blocked状态
唤醒的方法:
  void notify() 唤醒在此对象监视器上等待的单个线程。
  void notifyAll()唤醒在此对象监视器上等待的所有线程。

线程间通信

概念:多个线程在处理同一一个资源,但是处理的动作(线程的任务)却不相同。

比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。

 

为什么要处理线程间通信: 

  多个线程并发执行时,在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成- -件任务 ,并且我们希望他们有规律的执行,那么多线程之间需要一些协调通信 ,以此来帮我们达到多线程共同操作一份数据。

如何保证线程间通信有效利用资源:

  多个线程在处理同一一个资源,并且任务不同时,需要线程通信来帮助解决线程之间对同一个变量的使用或操作。

  就是多个线程在操作同一-份数据时,避免对同- -共享变量的争夺。也就是我们需要通过一定的手段使各个线程能

  有效的利用资源。而这种手段即一-等待唤醒机制。

posted @ 2022-07-08 11:05  肥宅快乐水~  阅读(24)  评论(0)    收藏  举报