多线程-3.sleep() yield() join()
1 // Thread.java 静态方法
2 public static native void sleep(long millis) throws InterruptedException;
// Thread.java 静态方法
public static native void yield();
1 // Thread.java
2 public final void join() throws InterruptedException {
3 join(0);
4 }
5 /**
6 * Waits at most {@code millis} milliseconds for this thread to
7 * die. A timeout of {@code 0} means to wait forever.
8 */
9 // 因为函数内使用了wait()方法,必须用syncronized关键字修饰方法
10 public final synchronized void join(long millis)
11 throws InterruptedException {
12 long base = System.currentTimeMillis();
13 long now = 0;
14
15 if (millis < 0) {
16 throw new IllegalArgumentException("timeout value is negative");
17 }
18 // 直到使用方法的线程实例变为terminated状态,当前线程(不是调用方法的线程实例,通常是其父线程)
19 // 都会一直执行循环代码
20 if (millis == 0) {
21 while (isAlive()) {
22 wait(0);
23 }
24 } else {
25 // 等待z至少millis毫秒后,当前线程跳出循环代码
26 while (isAlive()) {
27 long delay = millis - now;
28 if (delay <= 0) {
29 break;
30 }
31 wait(delay);
32 now = System.currentTimeMillis() - base;
33 }
34 }
35 }
多线程-3.sleep() yield() join()的更多相关文章
- 关于多线程中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方法.容易混淆他们的功能及作用.自己仔细研究了下,他们主要的区别 ...
- java ---线程wait/notify/sleep/yield/join
一.线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态). New:新建状态,当线 ...
- Java中sleep,wait,yield,join的区别
sleep() wait() yield() join()用法与区别 1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”.不推荐使用. sleep()使当前线程 ...
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁.偏向锁) Java 并发编程 ...
- Object的wait/notify/notifyAll&&Thread的sleep/yield/join/holdsLock
一.wait/notify/notifyAll都是Object类的实例方法 1.wait方法:阻塞当前线程等待notify/notifyAll方法的唤醒,或等待超时后自动唤醒. wait等待其实是对象 ...
- 016 sleep,wait,yield,join区别
1.线程通常有五种状态,创建,就绪,运行.阻塞和死亡状态.2.阻塞的情况又分为三种:(1).等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中.进入 ...
随机推荐
- BZOJ_4034 [HAOI2015]树上操作 【树链剖分dfs序+线段树】
一 题目 [HAOI2015]树上操作 二 分析 树链剖分的题,这里主要用到了$dfs$序,这题比较简单的就是不用求$lca$. 1.和树链剖分一样,先用邻接链表建双向图. 2.跑两遍$dfs$,其实 ...
- Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架
目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...
- Java中BO、DAO、DO、DTO、PO、POJO、VO的概念
在程序开发中,经常会碰到各种专业术语,这里统一做一下解释,有遗漏或理解错误的恳请指正. BO(Business Object)业务对象 主要作用是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其 ...
- [源码解析] 并行分布式框架 Celery 之 worker 启动 (1)
[源码解析] 并行分布式框架 Celery 之 worker 启动 (1) 目录 [源码解析] 并行分布式框架 Celery 之 worker 启动 (1) 0x00 摘要 0x01 Celery的架 ...
- 「HTML+CSS」--自定义按钮样式【004】
前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...
- springboot项目整合mybatis
记录创建springboot项目并配置mybatis中间件: 资源准备及版本说明 编程工具:IDEA JDK版本:1.8 Maven版本:Apache Maven 3.6.3 springboot版本 ...
- JAVAEE_Servlet_10_HTTP协议
HTTP协议 * 什么是HTTP 协议? - HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数 ...
- Day13_65_线程sleep()方法
线程sleep()方法 * public static void sleep(long millis) throws InterruptedException * Thread.sleep(),该方 ...
- Azure CDN 为静态网站创建内容分发网络
一,引言 最近刚刚接触 Edi.Wang 的 Moonglade 博客系统,正好这套系统中有使用到 Azure CND (内容分发网络),那就学习学习.那么今天就尝试利用 Azure CDN 来发布静 ...
- 在 Windows 用上 Linux GUI——GitHub 热点速览 v.21.17
本文首发于「HelloGitHub」微信公众号,搜索「HelloGitHub」点击关注解锁更多宝藏! 作者:HelloGitHub-小鱼干 超喜欢本周的 GitHub 热点,如果你是个 Windows ...