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()则不会释放锁。

java 线程的理解_Java多线程基础理解相关推荐

  1. java子线程的创建_Java多线程基础(一):线程的创建

    多线程基础 并行与并发 并发是指一个处理器同时处理多个任务. 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务. 打个比方:在并发的状态下,餐厅里只有一个厨师,尽管他做事利索,餐厅的客人等待 ...

  2. java 线程面试题_JAVA多线程面试题(一)

    1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...

  3. java线程代码实现_Java 多线程代码实现讲解

    作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...

  4. java线程知识梳理_Java多线程——多线程相关知识的逻辑关系梳理

    1 学习多线程知识的根本目标 多线程知识的根本目标是:设计稳健的并发程序. 当然,本文无法回答这个实践性很强的问题(这与具体的业务相关,涉及到具体的策略),本文主要阐述相关知识之间的关系,希望初学者不 ...

  5. java 线程 异常中断_java多线程并发之旅-19-InterruptedException 中断异常处理及中断机制...

    引言 如果对 Java 中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此. 中断机制是如何工作的?捕获或检测到中断后,是抛出 InterruptedException 还 ...

  6. java线程集合点_Java多线程学习笔记(三) 甚欢篇

    使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...

  7. java线程池 锁_java多线程——锁

    这是多线程系列第四篇,其他请关注以下: 如果你看过前面几篇关于线程的文字,会对线程的实现原理了然于胸,有了理论的支持会对实践有更好的指导,那么本篇会偏重于线程的实践,对线程的几种应用做个简要的介绍. ...

  8. java线程下载文件_Java多线程下载文件实例详解

    本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...

  9. java 线程锁概念_Java多线程——锁概念与锁优化

    为了性能与使用的场景,Java实现锁的方式有非常多.而关于锁主要的实现包含synchronized关键字.AQS框架下的锁,其中的实现都离不开以下的策略. 悲观锁与乐观锁 乐观锁.乐观的想法,认为并发 ...

最新文章

  1. abortonerror_离线打包白屏
  2. 系统在iis6上部署
  3. leetcode题解48-旋转图像
  4. Autorelease Pool
  5. 认识ruquest对象
  6. 笔记本无线网卡资源管理器服务器,笔记本无线网卡怎么打开 笔记本无线上网卡找不到网络解决方法...
  7. 9款主流图表控件轻松实现数据可视化
  8. [Boost.asio] 深入linux网络编程(四):使用asio搭建商用服务器
  9. 计算机做游戏软件视频,电脑上录制游戏视频用什么软件好?专业的游戏录制软件推荐...
  10. 4选1数据选择器程序及testbench文件,给出仿真波形,分析
  11. 《剑指 offer : 专项突破版》 读后感
  12. JavaScript 销毁对象
  13. # Vue 配置前端后端路由地址
  14. zillow房价预测比赛_如何看待 Kaggle 发布的 Zillow 房价预测比赛?
  15. 高人、天才、牛逼…从柳传志到雷军、马云,几乎没人不服任正非!
  16. python入门教学反思_Python语言教学反思
  17. jquery实现截取pc图片_Cropper.js 实现裁剪图片并上传(PC端)
  18. 科技作者吴军:不用低效率的算法做事情
  19. 程序员用代码写合租广告,网友神评亮了
  20. Windows下载安装包格式说明

热门文章

  1. cmd fsutil 命令 - 创建指定大小文件命令
  2. 记录几条简单的正则表达式
  3. JavaScript 弹出子窗体并返回结果到父窗体
  4. linux 使用ssh-keygen生成ssh公钥和私钥
  5. 如何设置IntelliJ IDEA智能感知支持Jsp内置对象
  6. sql server 2005 修改动态端口,连接字符串为:需要改成:IP地址+逗号+端口号才行...
  7. 百度邮件曝光:高级技术总监接管CTO工作
  8. 开发CISCO交换机管理软件
  9. OpenCV初探 —— 将OpenCV窗口链接在MFC的PictureControl控件中
  10. Linux -- 以root权限安装QT5.8.0