多线程的sleep、yield、join用法及sleep与wait的区别
Thread类的方法列表:sleep、yield、join用于线程的协作,围绕线程的调度
1、join()等待线程结束:调用join方法的线程,执行结束后才会释放锁。主线程main中调用启动线程(调用start),然后调用该线程的join方法,可以达到主线程等待工作线程运行结束后才执行的效果,并且join要在start之后调用。
2、sleep()暂停执行当前线程,让线程睡眠一段时间:挂起线程一段时间,让出CpU,不释放锁
3、interrupt()中断线程:中断当前线程,抛出异常,释放锁
4、yield()暂停线程:使正在执行的线程临时暂停,允许其他线程执行,让出CpU,释放锁,当前线程处于runnable状态(可能别人抢到CpU也可能是它自己抢到)
5、Thread.currentThread().getName() :获取当前线程名字
以下两个方法是Object类定义的方法,java线程间通过他们实现通信:
7、wait()使线程等待:挂起当前线程,直到interrupt()方法中断它或者另一个线程调用notify()或notifyAll()方法通知它。(wait方法调用时会释放锁,让出CpU)
wait方法只能在synchronized块或者synchronized方法中使用(因为要先获取锁,wait才能释放锁)
8、notify()或notifyAll():唤醒调用了wait()方法的线程,只能用在同步方法或同步块内部。
notify与notifyAll区别:notifyAll会让所有处于等待池中的线程全部进入锁池去争夺锁,而notify只会随机让其中一个线程去争夺锁。
多线程的sleep、yield、join用法及sleep与wait的区别的更多相关文章
- sleep() wait() yield() join()用法与区别
1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”.不推荐使用. sleep()使当前线程进入阻塞状态,在指定时间内不会执行. 2.wait()方法 在其他线程调用 ...
- 多线程-3.sleep() yield() join()
1.sleep()方法 jdk文档描述:Causes the currently executing thread to sleep (temporarily cease execution) for ...
- Java中sleep,wait,yield,join的区别
sleep() wait() yield() join()用法与区别 1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”.不推荐使用. sleep()使当前线程 ...
- 关于多线程中sleep、join、yield的区别
好了.说了多线程,那就不得不说说多线程的sleep().join()和yield()三个方法的区别啦 1.sleep()方法 /** * Causes the currently executing ...
- JAVA 多线程随笔 (二) sleep, yield, join, wait 和notify
这里先说明一下锁对象,如果一个类比如Person里的方法都有synchronized来修饰,那么每一个方法的锁对象就是Person的一个实例person. 锁对象也可以针对某个特定的实例, 比如syn ...
- Java多线程系列 基础篇10 wait/notify/sleep/yield/join
1.Object类中的wait()/notify()/notifyAll() wait(): 让当前线程处于Waiting状态并释放掉持有的对象锁,直到其他线程调用此对象的线程notify()/not ...
- java多线程之yield,join,wait,sleep的区别
Java多线程之yield,join,wait,sleep的区别 Java多线程中,经常会遇到yield,join,wait和sleep方法.容易混淆他们的功能及作用.自己仔细研究了下,他们主要的区别 ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- java ---线程wait/notify/sleep/yield/join
一.线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态). New:新建状态,当线 ...
随机推荐
- 开源工作流管理系统节点接收人设置“指定节点处理人”系列讲解
关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...
- P5727 【深基5.例3】冰雹猜想
链接:Miku -------------------- 欸,为什么我第一遍没过 -------------------- #include<iostream> using namespa ...
- 记一个开发是遇到的坑之Oralce 字符串排序
简单描述一下情况,就是存储过程中用一个字符串类型的字段作为患者就诊的排序号,结果莫名发现叫完1号后叫了11.12等患者.用户的反馈不一定准确,自己加了日志的,赶紧拷贝日志来观察一下.结果发现实际情况就 ...
- vue中允许你继续使用swiper的组件 vue-awesome-swiper---切图网
swiper是一个在切图中好用到不行的图片轮播插件,包括3d轮播.h5滑屏等复杂应用都不在话下,到了vue项目一切逻辑完全颠覆了,没有获取dom的概念,还好有 vue-awesome-swiper组件 ...
- linux 开机自启动redis服务
[Unit] Description=The redis-server Process Manager Documentation=https://redis.io/ After=network.ta ...
- 题解 Luogu P3370
讲讲这题的几种做法: 暴力匹配法 rt,暴力匹配,即把字符串存起来一位一位判相等 时间复杂度$ O(n^2·m) $ 再看看数据范围 \(n\le10^5,m\le10^3\) 当场爆炸.当然有暴力分 ...
- Programming on C 学习笔记
目录 include不同的声明方式有什么不同? if defined 与 #ifdef 有什么区别? undef 是怎么工作的? 如何利用 typedef 来定义数组? 枚举中,如果有个元素被赋予值, ...
- 【macOS使用技巧】使用空格键快速预览文件内容
Quickview 是mac系统上一个强大的预览功能, 可以预览 mp4 mov等音频文件, 当然图片.文本.也都可以进行预览. 在系统中如果你希望快速浏览一下文件而不想打开的文件的话只要选择文件然后 ...
- 秋水逸冰实用Linux脚本收藏
秋水逸冰的脚本非常受欢迎,奈何其本人博客已经不能访问(目前是这样,不知道别的地区是否能访问),实际上GitHub上他本人一直在维护,因为某些原因不放出他本人的GitHub地址.截止到2019年12月1 ...
- MySQL常用命令.md
链接数据库 ## -h/-u这些后面没有空格 ./bin/mysql -h[ip地址] -P[端口号] -u[用户名] -p[密码] 查看建表语句 show create table [table_n ...