[Java]Wait
Wait
java的wait()方法是让当前线程等待,当前线程不是指t而是指主线程(让执行wait的线程等待)
wait会释放锁,等待其他线程调用notify/notifyAll()再继续运行
package com.citi.test.mutiplethread.demo0503;2 3 import java.util.Date;4 5 public class WaitTest {6 public static void main(String[] args) {7 ThreadA t1=new ThreadA("t1");8 System.out.println("t1:"+t1);9 synchronized (t1) {10 try {11 //启动线程12 System.out.println(Thread.currentThread().getName()+" start t1");13 t1.start();14 //主线程等待t1通过notify唤醒。15 System.out.println(Thread.currentThread().getName()+" wait()"+ new Date());16 t1.wait();// 不是使t1线程等待,而是当前执行wait的线程等待17 System.out.println(Thread.currentThread().getName()+" continue"+ new Date());18 } catch (Exception e) {19 e.printStackTrace();20 }21 }22 }23 }24 25 class ThreadA extends Thread{26 public ThreadA(String name) {27 super(name);28 }29 @Override30 public void run() {31 synchronized (this) {32 System.out.println("this:"+this);33 try {34 Thread.sleep(2000);//使当前线程阻塞1秒35 } catch (InterruptedException e) {36 // TODO Auto-generated catch block37 e.printStackTrace();38 }39 System.out.println(Thread.currentThread().getName()+" call notify()");40 this.notify();41 }42 }43 }
Join
- join方法的原理就是调用相应线程的wait方法进行等待操作的,例如A线程中调用了B线程的join方法,则相当于在A线程中调用了B线程的wait方法,当B线程执行完(或者到达等待时间),B线程会自动调用自身的notifyAll方法唤醒A线程,从而达到同步的目的
[Java]Wait相关推荐
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...
- Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...
- 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码
java开发必知必会之看源码,而看源码的第一步则是找到源码
- java基本类型转换,随记
java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...
- 科学处理java.lang.StackOverflowError: null异常
java.lang.StackOverflowError: null异常处理 在项目运行中出现StackOverflowError 首先要检查在编码中是否有明显的递归编码,比如死循环或者无限循环调用. ...
最新文章
- 一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
- 详解布局之--静态、自适应、流式、响应式
- JDATA绝对语义识别挑战大赛-季军方案
- 努力一下,还是可以成为技术美术(TA)的
- task_struct解析
- LVIS挑战赛冠军总结 | 视觉任务中长尾分布问题研究进展与挑战
- 开源软件使用_消费开源软件:如何使用和购买
- python整形浮点型_Python3基础 | 整型浮点型
- width:100%以什么为基准的测试
- 8.企业安全建设入门(基于开源软件打造企业网络安全) --- 态势感知系统建设
- Objective-C中的@Property具体解释
- HTML5 Canvas雨滴下落动画 超逼真
- 10.Qt元素QTreeWidgetItem
- 通过SAXReader解析XML
- 淘宝新店提升必备-直通车如何开
- 读书笔记《你真的理解什么是财富自由吗?》
- 统一社会信用代码规则
- VMware8虚拟机安装教程
- 最好用的pdf编辑工具——PDF Expert支持big sur
- XCode 苹果开发者账号,无法本地编译项目,问题所在 The app identifier “xxxx“ cannot be registered to your development team
热门文章
- Docker 有什么优势?
- 10W+爆文背后隐藏的10条规律(人人可复制)
- Android学习之——Canvas画图
- 微信小程序——意见反馈页面的实现(使用使用微信官方反馈功能)
- Linux c使用gumbo库解析页面表单信息(三)
- 【JSP实验报告】手把手教Web项目=jsp+tomcat+MySQL
- MySQL小练习(仅适合初学者,非初学者勿进)
- Linux - CentOS操作系统学习
- 常用类之集合:ArrayList类
- java数组输出是地址_java数组输出 - SuperPcf的个人空间 - OSCHINA - 中文开源技术交流社区...