JAVA - 线程同步和线程调度的相关方法

  • wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

  • sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException异常;sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

  • notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切地唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且与优先级无关;

  • notityAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让它们竞争,只有获得锁的线程才能进入就绪状态;

    通过Lock接口提供了显式的锁机制(explicit lock),增强了灵活性以及对线程的协调。Lock接口中定义了加锁(lock())和解锁(unlock())的方法,同时还提供了newCondition()方法来产生用于线程之间通信的Condition对象;此外,Java 5还提供了信号量机制(semaphore),信号量可以用来限制对某个共享资源进行访问的线程的数量。在对资源进行访问之前,线程必须得到信号量的许可(调用Semaphore对象的acquire()方法);在完成对资源的访问后,线程必须向信号量归还许可(调用Semaphore对象的release()方法)。

最新文章

  1. Bootstrap分为几部分?
  2. 安卓第十天笔记-fragment
  3. java jdbc 封装。。
  4. gradient css
  5. asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
  6. spring+hibernate
  7. IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置
  8. HiPAC高性能规则匹配算法之查找过程
  9. 算法如功夫——C++ 用递归函数计算n的阶乘n!
  10. 初识 Javascript.01 -- Javascript基础|输出方式、变量、变量命名规范、数据类型、
  11. 玩转html
  12. memcached解压报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now的解决方法
  13. phpstorm配置Xdebug进行调试
  14. [MapReduce_add_1] Windows 下开发 MapReduce 程序部署到集群
  15. MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Max, Min, Count , DistinctCount 以及其它 TopCount, Generate
  16. Codeforces Beta Round #77 (Div. 2 Only)
  17. shell脚本清空redis库缓存
  18. Erlang编程语言的一些痛点
  19. OpenGLES.gpus_ReturnNotPermittedKillClient
  20. js timestamp与datetime之间的相互转换

热门文章

  1. 数组 indexOf()
  2. 用来创建用户docker registry认证的Secret
  3. 地铁系统ajax人性化操作
  4. JavaScript学习总结6-apply
  5. 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》
  6. mouseenter 和 mouseover 的区别
  7. 你能知道的或者不知道的shell变量都在这里
  8. oracle提交后再回滚解决办法
  9. Vue3 setup详解
  10. Hadoop3.x 三大组件详解