Java并发面试题:(三)sleep和wait方法区别,notify 和 notifyAll方法

news2024/11/20 0:48:48

sleep和wait

在这里插入图片描述

wait, notify 和 notifyAll这些方法不在thread类里面?

JAVA提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。如果wait()方法定义在Thread类中,线程正在等待的是哪个锁就不明显了。简单的说,由于wait,notify和notifyAll都是锁级别的操作,所以把他们定义在Object类中因为锁属于对象。

wait和notify方法要在同步块中调用?

这是JDK强制的,wait()方法和notify()/notifyAll()方法在调用前都必须先获得对象的锁

wait()方法强制当前线程释放对象锁。这意味着在调用某对象的wait()方法之前,当前线程必须已经
获得该对象的锁。因此,线程必须在某个对象的同步方法或同步代码块中才能调用该对象的wait()方
法。

在调用对象的notify()和notifyAll()方法之前,调用线程必须已经得到该对象的锁。因此,必须在某
个对象的同步方法或同步代码块中才能调用该对象的notify()或notifyAll()方法。

调用wait()方法的原因通常是,调用线程希望某个特殊的状态(或变量)被设置之后再继续执行。调用
notify()或notifyAll()方法的原因通常是,调用线程希望告诉其他等待中的线程:“特殊状态已经被设
置”。这个状态作为线程间通信的通道,它必须是一个可变的共享状态(或变量)。

wait()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别?

wait()方法和notify()/notifyAll()方法在放弃对象监视器的时候的区别在于:wait()方法立即释放对象监视
器,notify()/notifyAll()方法则会等待线程剩余代码执行完毕才会放弃对象监视器。

Thread.sleep(0)的作用是什么?

由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep(0)手动触发一次操作系统分配时间片的操作,这也是平衡CPU控制权的一种操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件操作合集 - C语言

前言 由于我们每次打开程序写入的数据都是在内存中处理,关闭程序就直接没有了,下次还需要重新进行操作录入数据等,这里我们就可以使用文件来保存数据,更加持久化,下面我们基于c语言来介绍一些文件操作. 文件指针: 文件的打开和关闭 文件在读写之前应该先打开文件,在…

Linux:进程控制

目录 一、进程创建 写时拷贝 二、进程终止 echo $? 如何终止进程 _exit与exit 三、进程等待 进程等待的必要性 进程等待的操作 wait waitpid status 异常退出情况 status相关宏 options 四、进程程序替换 1、关于进程程序替换 2、如何进行进程程序替换 程序…

记录一次典型oom的处理过程

背景 有同学反馈收到应用RT的报警,其中的流量都来自于网关集群中的一台机器。因为负责网关,就上去看了下并进行排查。整体是一个比较明显的oom,这里只是记录下排查过程,老司机可以略过了。 初步现象 常规步骤,使用t…

maven 新建模块 导入后 按Ctrl 点不进新建模块pom定义

新建的ruoyi-common-mybatisplus 模块,导入一直不正常 画出的模块一直导入不进来 这是提示信息 这是正常的提示信息 加上 <version>3.6.3</version> 后,才一切正常

Bootstrap的导航菜单组件相关知识

目录 01-最基本的导航示例02-设置导航的对齐方式02-1-设置导航在水平方向上的对齐方式 02-2-设置导航在垂直方向上进行布局03-设计标签页导航04-带下拉菜单的标签页导航05-设计胶囊式导航05-1-基本的胶囊式导航05-2-带下拉菜单的胶囊式导航 06-让导航菜单项可以切换(激活导航菜…

精品基于django的高校竞赛比赛管理系统Python

《[含文档PPT源码等]精品基于django的高校竞赛管理系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技术&#xff1a;JavaScri…

宝塔面板部署express以及MySql项目

第一次在宝塔面板上部署express和MySql项目&#xff0c;部署过程一直跑不通接口&#xff0c;特此记录一下。 在部署的时候&#xff0c;建议第一步把数据库MySql给跑通&#xff0c;中间好多原因是由于数据库的原因给引起的。 一.连接数据库 &#xff08;1&#xff09;在宝塔面…

IP 协议的相关特性(部分)

IP 协议的报文格式 4位版本号&#xff1a; 用来表示IP协议的版本&#xff0c;现有的IP协议只有两个版本&#xff0c;IPv4&#xff0c;IPv6。 4位首部长度&#xff1a; 设定和TCP的首部长度一样 8位服务类型&#xff1a; &#xff08;真正只有4位才有效果&#xff09;&#xf…

教你快速解决unity无法添加脚本bug

原因一 就是报错的字面意思&#xff0c;文件名与类名不一致&#xff01; 原因二 与版本不兼容的汉化导致系统出错&#xff01; 解决办法一 使用原版本自带的英文显示 解决办法二 更换汉化包 我其实更加推荐使用英文版本的Unity&#xff01;

Rust闭包 - Fn/FnMut/FnOnce traits,捕获和传参

Rust闭包: 是一类能够 捕获周围作用域中变量 的 函数 |参数| {函数体} 参数及返回值类型可推导&#xff0c;无需显示标注类型唯一性&#xff0c;确定后不可更改函数体为单个表达式时&#xff0c;{}可省略 文章目录 引言1 分类 Fn / FnMut / FnOnce2 关键词 move3 闭包作为参数…

MySQL8安装步骤

本次安装所需版本为MySQL8.0.24,客户端工具选用的是Navicat11. 大家可以进入官网下载其它版本&#xff0c; 1.双击安装文件 2.等待一段时间进入以下界面 3.选择Custom,点击Next 4.进入以下界面&#xff0c;需要C2019的环境&#xff0c;选中此行然后Execute执行。 5.点击Exe…

论文解析——一种多核处理器直连接口QoS的设计与验证

作者 罗莉&#xff0c;周宏伟&#xff0c;周理&#xff0c;潘国腾&#xff0c;周海亮&#xff08; 国防科技大学&#xff09; 刘彬 &#xff08; 武警贵州省总队&#xff09; 摘要 多核处理器直接互连构建多路并行系统&#xff0c;一直是提高高性能计算机并行性的主要方式。…

【Hello Algorithm】暴力递归到动态规划(三)

暴力递归到动态规划&#xff08;三&#xff09; 最长公共子序列递归版本动态规划 最长回文串子序列方法一方法二递归版本动态规划 象棋问题递归版本动态规划 咖啡机问题递归版本动态规划 最长公共子序列 这是leetcode上的一道原题 题目连接如下 最长公共子序列 题目描述如下…

三种对象注入的区别以及@Autowired和@Resource的区别

文章目录 1. 对象注入1.2 属性注入1.2.1 属性注入的优缺点 1.3 Setter方法注入1.3.1 Setter注入的优缺点 1.4 构造方法注入&#xff08;官方推荐&#xff09;1.4.1 构造方法的优缺点 1.5 Resource与Autowired区别 1. 对象注入 获取Bean对象也称为对象注入/对象装配&#xff0c…

Linux:Termius连接本地虚拟机与虚拟机快照

Termius连接本地虚拟机与虚拟机快照 1. Termius连接本地虚拟机2. 虚拟机快照与还原2.1 设置快照以及恢复 附录 1. Termius连接本地虚拟机 ifconfig -a 查看配置 连接成功 2. 虚拟机快照与还原 在学习阶段我们无法避免的可能损坏Linux操作系统。 如果损坏的话&#xff0c;重新…

FPGA复习(功耗)

减小功耗 就得减小电流 电流和CF有关&#xff08; C: 电容&#xff08;被门数目和布线长度影响&#xff09; F:时钟频率&#xff09; 方法大纲 减小功耗&#xff1a;1 时钟控制 2输入控制 3减小供电电压 4双沿触发器 5修改终端 同步数字电路降低动态功耗&#xff1a;动态禁止…

零食百货经营商城小程序的作用是什么

零食可以只指某款单品&#xff0c;也可以是一堆各品牌食品&#xff0c;其行业涵盖人群广泛&#xff0c;主要以零售和批发为主&#xff0c;不受限制&#xff0c;各地从业商家也非常多&#xff0c;但随着线上电商崛起&#xff0c;零食经营痛点也逐渐凸显。 通过【雨科】平台搭建零…

Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo

Elasticsearch实现检索词自动补全 自动补全定义映射字段建立索引测试自动补全 自动纠错查询语句查询结果 拼音补全与繁简转换安装 elasticsearch-analysis-pinyin 插件定义索引与映射建立拼音自动补全索引测试拼音自动补全测试繁简转换自动补全 代码实现demo结构demo获取 自动补…

C# 图解教程 第5版 —— 第5章 类的基本概念

文章目录 5.1 类的概述5.2 程序和类&#xff1a;一个简单的示例&#xff08;*&#xff09;5.3 声明类&#xff08;*&#xff09;5.4 类成员&#xff08;*&#xff09;5.4.1 字段&#xff08;*&#xff09;5.4.2 方法 5.5 创建变量和类的实例&#xff08;*&#xff09;5.6 为数据…

解析找不到msvcp140.dll的5个解决方法,快速修复dll丢失问题

​在使用计算机过程中&#xff0c;我们也会遇到各种各样的问题。其中&#xff0c;找不到msvcp140.dll修复方法是一个非常普遍的问题。msvcp140.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2015 Redistributable的一部分。这个文件包含了许多用于运行C程序的函…