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相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

  10. 科学处理java.lang.StackOverflowError: null异常

    java.lang.StackOverflowError: null异常处理 在项目运行中出现StackOverflowError 首先要检查在编码中是否有明显的递归编码,比如死循环或者无限循环调用. ...

最新文章

  1. 一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
  2. 详解布局之--静态、自适应、流式、响应式
  3. JDATA绝对语义识别挑战大赛-季军方案
  4. 努力一下,还是可以成为技术美术(TA)的
  5. task_struct解析
  6. LVIS挑战赛冠军总结 | 视觉任务中长尾分布问题研究进展与挑战
  7. 开源软件使用_消费开源软件:如何使用和购买
  8. python整形浮点型_Python3基础 | 整型浮点型
  9. width:100%以什么为基准的测试
  10. 8.企业安全建设入门(基于开源软件打造企业网络安全) --- 态势感知系统建设
  11. Objective-C中的@Property具体解释
  12. HTML5 Canvas雨滴下落动画 超逼真
  13. 10.Qt元素QTreeWidgetItem
  14. 通过SAXReader解析XML
  15. 淘宝新店提升必备-直通车如何开
  16. 读书笔记《你真的理解什么是财富自由吗?》
  17. 统一社会信用代码规则
  18. VMware8虚拟机安装教程
  19. 最好用的pdf编辑工具——PDF Expert支持big sur
  20. XCode 苹果开发者账号,无法本地编译项目,问题所在 The app identifier “xxxx“ cannot be registered to your development team

热门文章

  1. Docker 有什么优势?
  2. 10W+爆文背后隐藏的10条规律(人人可复制)
  3. Android学习之——Canvas画图
  4. 微信小程序——意见反馈页面的实现(使用使用微信官方反馈功能)
  5. Linux c使用gumbo库解析页面表单信息(三)
  6. 【JSP实验报告】手把手教Web项目=jsp+tomcat+MySQL
  7. MySQL小练习(仅适合初学者,非初学者勿进)
  8. Linux - CentOS操作系统学习
  9. 常用类之集合:ArrayList类
  10. java数组输出是地址_java数组输出 - SuperPcf的个人空间 - OSCHINA - 中文开源技术交流社区...