zoukankan      html  css  js  c++  java
  • Java多线程基础理解

    • wait: 让当前线程处于“等待(阻塞)状态”,“直到其他线程调用此对象的notify()方法或是notifyAll()方法”,当前线程被唤醒(进入“就绪状态”)-会释放锁

    • yield:让步线程   yield()方法的作用是让步,它能让当前线程由“运行状态”进入到“就绪状态”,从而让其他具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其他具有相同优先级的线程就一定能获得执行权;也有可能是当前线程有进入到“运行状态”继续运行  不会释放锁

              sleep: 方法定义在Thread类中,sleep()的作用是让当前线程休眠,即当前线程会从“远程状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠的时间会大于/等于该休眠时间;在线程重新被唤醒时,它会由“阻塞状态”变成“就绪状态”,从而等待CPU的调度执行   不会释放锁

            

            

           join()方法和interrupt()方法

             一个线程可以在其他线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束结束才继续执行。如果某个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标线程t结束才恢复(即t.isAlive()返回为假)。也可以在调用jion()时带上一个超时参数(单位可以是毫秒,或者纳秒),这样如果目标线程在这段时间到期时还没有结束的话,join()方法总能返回。对jion()方法的调用可以被中断,做法是在调用线程上调用interrupt()方法,这时需要用到try_catch子句

      • yield()和wait()的比较  

      • wait()的作用是让当前线程由“运行状态”进入到“等待(阻塞)”的同时,也会释放同步锁。而yield()的作用是让步,它也是让当前线程离开“运行状态”。区别是:(1)wait()是让线程由“运行状态”进入到“等待(阻塞)状态”,而yield()是让线程由“运行状态”进入到“就绪状态”。(2)wait()是会让线程释放它所持有的对象的同步锁,而yield()方法不会释放对象的同步锁

      • sleep()和wait()的比较:

      •  wait()的作用是让当前的线程由“运行状态”进入到“等待(阻塞)状态”的同时,也会释放同步锁。但是sleep()的作用是让当前线程由“运行状态”进入到“休眠(阻塞)”状态。wait()会释放对象的同步锁,而sleep()则不会释放锁。

  • 相关阅读:
    cli create ssl certkey
    开启HSTS让浏览器强制跳转HTTPS访问
    Down State Flush Feature
    tasklist、taskkill命令使用
    findstr 命令使用
    【批处理学习笔记】第十一课:常用DOS命令(1)
    【批处理学习笔记】第十课:批处理符号(3)
    【批处理学习笔记】第九课:批处理符号(2)
    【批处理学习笔记】第八课:批处理符号(1)
    【批处理学习笔记】第七课:简单的批处理命令(6)
  • 原文地址:https://www.cnblogs.com/wanglu1991/p/11889884.html
Copyright © 2011-2022 走看看