zoukankan      html  css  js  c++  java
  • java线程基础巩固---wait和sleep的本质区别是什么,深入分析(面试常见问题)

    对于wait和sleep貌似都会阻塞线程,但是它们确实是很大的区别的,所以下面一点点来探讨:

    • 区别一、Sleep()是线程里面的方法,而Wait()是Object类的方法。
      这个比较简单,直接看代码便知:

    • 区别二、sleep()方法不需要被notify唤醒,而wait()则需要【当然wait(10)这样的情况除外】。
      这个比较容易理解,就不多解释了。
    • sleep()使用时不需要使用syncronized加上同步锁,但是wait()需要。
      这个做一下实验就明白了:

      嗯~~调用sleep()时是不需要加同步块的,接下来再看wait():

      好接着解决这个异常:
    • sleep()时不会释放同步锁,但是wait()会释放。
      这个不太好理解,下面做实验验证一下:

      而当线程一sleep()结束之后,线程二就抢到锁了。

      好,接下来换成wait()再看结果:

      看见木有,等于两个线程同时执行了,也就是在线程一wait()期间,其锁就被释放可以被其它线程获得了。
  • 相关阅读:
    机器学习粗略认识--线性模型
    LDA主题模型困惑度计算
    python-igraph
    pandas 使用技巧
    pandas读取MySql/SqlServer数据
    聚类模型性能评价指标
    各种编码格式
    利用分块传输吊打所有WAF--学习笔记
    Sql 注入----学习笔记2
    Sql 注入----学习笔记
  • 原文地址:https://www.cnblogs.com/webor2006/p/8993645.html
Copyright © 2011-2022 走看看