首页 > 其他分享 >wait() vs sleep()

wait() vs sleep()

时间:2024-08-14 11:27:16浏览次数:11  
标签:currentThread Thread getName System vs 线程 sleep out wait

wait(timeout)

释放对象锁

import lombok.SneakyThrows;

public class T {
    @SneakyThrows
    public static void main(String[] args) {
        Object o = new Object();
        Thread thread1 = new Thread(() -> {
            try {
                synchronized (o) {
                    System.out.println(Thread.currentThread().getName() + "进入等待状态");
                    o.wait(5000);
                    System.out.println(Thread.currentThread().getName() + " over");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }, "线程1");

        Thread thread2 = new Thread(() -> {
            synchronized (o) {
                try {
                    System.out.println(Thread.currentThread().getName() + " hello");
                } catch (Exception e) {

                }
            }
        }, "线程2");

        thread1.start();
        thread2.start();
    }
}

sleep()

不会释放对象锁

import lombok.SneakyThrows;

/*
线程1进入等待状态
线程1 over
线程2 hello
* */
public class T {
    @SneakyThrows
    public static void main(String[] args) {
        Object o = new Object();
        Thread thread1 = new Thread(() -> {
            try {
                synchronized (o) {
                    System.out.println(Thread.currentThread().getName() + "进入等待状态");
                    Thread.sleep(5000);
                    System.out.println(Thread.currentThread().getName() + " over");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }, "线程1");

        Thread thread2 = new Thread(() -> {
            synchronized (o) {
                try {
                    System.out.println(Thread.currentThread().getName() + " hello");
                } catch (Exception e) {

                }
            }
        }, "线程2");

        thread1.start();
        thread2.start();
    }
}

标签:currentThread,Thread,getName,System,vs,线程,sleep,out,wait
From: https://www.cnblogs.com/goodluckxiaotuanzi/p/18358552

相关文章

  • OpenCV(cv::waitKey())
    目录1.函数解析参数返回值2.示例3.说明4.注意事项cv::waitKey()是OpenCV库中的一个函数,用于等待用户的键盘输入。它在处理图像和视频时非常有用,特别是在显示图像窗口时,用于控制图像的显示和响应用户输入。1.函数解析intcv::waitKey(intdelay=0);参数delay:......
  • 如何获取VS Code扩展的版本更新信息
    获取VSCode扩展的版本更新的需求因为企业内部有架设私有扩展管理器的要求,但是对于一些官方市场的插件,希望可以自动获取这些扩展的更新并上传至私有扩展管理器。于是就有了本篇介绍的需求:通过API的方式获取VSCode扩展的更新。关于VSCode的私有扩展管理器可以参考:VS......
  • NOI Linux VSCode使用指北
    NOILinuxVSCode使用指北安装NOILinux不是已经帮你做好这一步了吗?准备首先在这里对VSC的界面做一个介绍。1.终端VSC相对于其他的编辑器的优势是有一个非常直观的内置终端,这也让我们可以专心在这一个窗口内编辑和调试代码。召唤终端的快捷键是Ctrl+Shift+P!召唤终......
  • 了解VSCode:一款功能强大的开源代码编辑器
    VisualStudioCode(简称VSCode)是由微软开发的一款免费、开源的源代码编辑器。它以其强大的功能、丰富的插件生态系统、跨平台兼容性以及出色的用户体验,成为了广大开发者的首选工具。以下是对VSCode的详细介绍,涵盖其特点、功能、安装与配置、以及扩展生态等方面。一、VSCode的......
  • vs2022使用方法
    文章原创,内容来自b站up主microfrank,本文从vs2022安装问题,怎么使用,项目里各个文件的意义,以及代码分享等功能1.installer安装器讲解:开始菜单搜索vis,其中有一个installer后缀,供以后重新设置,bug修复,卸载等2.登录以及激活:登录:用微软账户邮箱登录()密码()3.创建项目以及认识视图窗口: ......
  • VS Code Server的离线安装过程
    1.服务器上vscode-server安装取决于你本地使用的vscode版本,版本用commit_id来区别。首先打开vscode,点击帮助-关于(Help->about可以查看),如下这个commitid也就是你本地Vscode版本的commitid:2.vscode-server的下载链接如下:https://update.code.visualstud......
  • VS Code 修改默认插件安装位置
    先将扩展插件extensions从默认安装路径剪切到你真正想要存放的位置将C:\Users\(用户名)\.vscode\extensions\剪切到存放的位置,此处以D:\extensions为例✨注意不要与VSCode安装目录放在一起,vscode更新时会删除的使用mklink命令创建快捷方式,使用\D参数创建软链接Micr......
  • VS2022+QT6.7.2 子线程与主线程通信(详细)(注释)
    需求:主线程将需要计算的数据发送给子线程,子线程将计算后的结果返回给主线程。实现逻辑:(前提:子线程类已创建好,并使用start方法启动子线程)1、主线程的mysignal1信号触发子线程的myslot2槽函数方法:connect(this,&QtWidgetsApplication13::mysignal1,st,&mythread::myslot2);......
  • LVS+Keepalived群集
    目录keepalived的热备方式keepalived的安装与服务一、使用Keepalived双机实现热备案例1:主服务器配置2:备用服务器的配置3:测试虚拟ip的连通性二、LVS+Keepalived高可用性1:主调度器配置健康状态检查的方式2:从调度器配置3:服务器池配置(1)web1网络的配置(2)web2服务器配置......
  • 修改『Visual Studio Code(VS Code)』插件默认安装路径的方法
    前言作者希望将『VisualStudioCode(以下简称为“VSCode”)』的插件安装在数据盘(D盘),用于统一管理,因此需要修改VSCode插件安装路径。VSCode插件默认的安装位置为:C:\Users\{个人用户名}\.vscode\extensions。方法一:修改快捷方式目标路径(★★☆)1.确保『code』快捷命令的可用......