java中的sleep()和wait()的区别

Verilog实战:手把手教你实现四路组相联Cache(附完整代码解析) 本文提供了一份详细的Verilog实战指南,手把手教你实现一个四路组相联Cache。内容涵盖从设计规格、核心存储阵列、LRU替换策略到状态机设计的完整流程,并附有代码解析与优化技巧,旨在帮助硬件设计者掌握Cache控制器的RTL实现与调试方法。 阅读详情

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。

sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。

在调用sleep()方法的过程中,线程不会释放对象锁。

而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备

获取对象锁进入运行状态。

什么意思呢?

举个列子说明:

复制代码
 1 /**
 2  * 
 3  */
 4 package com.b510.test;
 5 
 6 /**
 7  * java中的sleep()和wait()的区别
 8  * @author Hongten
 9  * @date 2013-12-10
10  */
11 public class TestD {
12 
13     public static void main(String[] args) {
14         new Thread(new Thread1()).start();
15         try {
16             Thread.sleep(5000);
17         } catch (Exception e) {
18             e.printStackTrace();
19         }
20         new Thread(new Thread2()).start();
21     }
22     
23     private static class Thread1 implements Runnable{
24         @Override
25         public void run(){
26             synchronized (TestD.class) {
27             System.out.println("enter thread1...");    
28             System.out.println("thread1 is waiting...");
29             try {
30                 //调用wait()方法,线程会放弃对象锁,进入等待此对象的等待锁定池
31                 TestD.class.wait();
32             } catch (Exception e) {
33                 e.printStackTrace();
34             }
35             System.out.println("thread1 is going on ....");
36             System.out.println("thread1 is over!!!");
37             }
38         }
39     }
40     
41     private static class Thread2 implements Runnable{
42         @Override
43         public void run(){
44             synchronized (TestD.class) {
45                 System.out.println("enter thread2....");
46                 System.out.println("thread2 is sleep....");
47                 //只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
48                 TestD.class.notify();
49                 //==================
50                 //区别
51                 //如果我们把代码:TestD.class.notify();给注释掉,即TestD.class调用了wait()方法,但是没有调用notify()
52                 //方法,则线程永远处于挂起状态。
53                 try {
54                     //sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,
55                     //但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
56                     //在调用sleep()方法的过程中,线程不会释放对象锁。
57                     Thread.sleep(5000);
58                 } catch (Exception e) {
59                     e.printStackTrace();
60                 }
61                 System.out.println("thread2 is going on....");
62                 System.out.println("thread2 is over!!!");
63             }
64         }
65     }
66 }
复制代码

运行效果:

复制代码
enter thread1...
thread1 is waiting...
enter thread2....
thread2 is sleep....
thread2 is going on....
thread2 is over!!!
thread1 is going on ....
thread1 is over!!!
复制代码

如果注释掉代码:

1 TestD.class.notify();

运行效果:

enter thread1...
thread1 is waiting...
enter thread2....
thread2 is sleep....
thread2 is going on....
thread2 is over!!!

且程序一直处于挂起状态。

原文:http://www.cnblogs.com/hongten/p/hongten_java_sleep_wait.html

Xilinx FPGA ICAP原语实现多重配置 众所周知,常见的FPGA通常为SRAM结构,固件程序一般存放在外置的串行Flash中,比如SPI Flash,M25P16或N25Q128等。 FPGA启动时,一般先从SPI起始地址开始加载数据到内部的SRAM,加载完成、校验通过则会直接运行。 那么有没有可能在SPI Flash中存放两个或多个FPGA固件呢? 阅读详情

相关推荐

告别Qt Creator!VSCode + QMake + MinGW:从零搭建高效Qt开发环境

本文详细介绍了如何使用VSCode替代Qt Creator搭建高效的Qt开发环境,涵盖VSCode配置、QMake与MinGW集成、智能提示优化及构建调试技巧。通过实战案例展示如何提升开发效率30%以上,特别适合中大型Qt项目开发。

weixin_30466039的博客 243

java中sleep()和wait()的区别

java中sleep()和wait()的区别

m0_52053621的博客 3360

在VS2019里把JSBSim飞行模型集成到你的C++项目里(附完整配置流程和常见错误解决)

本文详细介绍了如何在Visual Studio 2019中将JSBSim飞行模型集成到C++项目中,包括环境准备、源码编译、项目配置和常见错误解决方案。通过实战技巧和优化建议,帮助开发者高效实现高精度飞行仿真功能,提升开发效率。

weixin_42620202的博客 413

Java 中的 sleep 方法

Sleep可以让当前线程进行休眠,有如下两个方法: public static void sleep​(long millis) throws InterruptedException ,mills 毫秒 public static void sleep​(long millis, int nanos) throws InterruptedException ,millis 毫秒, nan...

学习笔记 4万+

RedHat 9 替换yum源镜像

引言:我们个人通常使用的红帽系统yum源是需要注册付费的,所以在使用yum源安装一些软件时无法正常安装(例如:MySQL),这时我们就需要将yum源替换为CentOS对应的源,以实现在红帽系统中正常安装软件。

YUJIAOZHU666的博客 3738

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 351

Java中Sleep和Wait的区别

虽然Java中的Sleep和Wait方法都可以实现线程的暂停,但它们在所属类、作用、使用场景和异常处理方面存在明显的区别。在实际开发中,我们需要根据具体的需求和场景选择合适的方法来控制线程的暂停和执行。

weixin_62988359的博客 3593

电机控制::软件架构::微型软件架构

所谓软件架构就是软件分层:HAL库,嵌入式操作系统,中间件,应用层。大型项目可参考借鉴ROS/PX4/Apollo/FMT等无人机、机器人、无人驾驶等开源项目;电机控制大型为AUTOSAR架构,小型跑裸机参考 前后台系统 或 微型实时操作系统对模块管理的思想。基本原理还是参照大型项目的架构来的,只是大部分层与块都相对简单,也没有操作系统这一层。硬件架构了解不同芯片组合及其各自的特点。1.FPGA+;2.架构;3.TC387+AUTOSAR架构,车规级,汽车领域常用。

one__leaf的博客 1695

Java 中 wait 和 sleep 的区别:从原理到实践全解析

在 Java 多线程编程中,wait和sleep是两位重量级角色。尽管它们都可以让线程暂停执行,但在实际使用中却有着天壤之别。wait和sleep有什么区别?。今天,我们就从它们的原理、使用场景、常见误区等方面做一个详细的讲解。特性sleepwait所属类ThreadObject是否释放锁否是唤醒方式自动notify或notifyAll使用场景模拟延迟、定时任务线程间通信、等待条件。

龚小帅的博客 2832

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 431

辉芒微教程第七篇《PWM与PWM3调节LED灯的亮度》

这个其实就是PR3L = 128设置的,由于我们刚刚寄存器设置了8位模式,其设置的范围就是0-255,而128/255≈50%左右,因此PR3L就是我们的占空比调节的寄存器,我们可以通过它来调节占空比,大家可以试试它占空比设置10%,30%,60%来看看它的不同效果,灯的亮度是肯定不一样的,如果有条件的朋友,可以购买一款逻辑分析仪去看他的占空比。平平无期的这个东西有什么东东用,貌似是没什么用,只是一个概念而已,是不是不同设备可以设置1秒,3秒,10秒的周期就行?但是它占空比为什么是50%,怎么得来的?

qq_41809823的博客 827

Java中wait和sleep区别

Java中wait和sleep区别 sleep属于Thread类中的static方法;wait属于Object类的方法 sleep时线程状态进入TIMED_WAITING(计时等待),时间到了后自动被唤醒;wait时线程状态进入WAITING(等待),需要手动唤醒 sleep方法在线程持有锁时候执行,不会释放锁资源;wait方法执行后会释放锁资源 sleep可以在持有锁或者不持有锁时执行;wait方法必须在持有锁时执行

stormkai的专栏 2312

某智能物流无人值守系统 ExportReport SQL注入漏洞复现

某智能物流无人值守系统 ExportReport存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。

0xSec 818

java中sleep()和wait()区别

sleep()与wait()区别: sleep()是Thread类的方法,wait()是Object类中的方法; sleep()方法可以在任何地方使用,wait()方法只能在synchronized方法或者synchronized块中使用 Thread.sleep()只会让出cpu,不会导致锁的行为发生改变; Object.wait()不仅让出cpu,还会释放已经占有的同步资源锁。...

sunshine_gy的博客 278

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java中wait()和sleep()的区别

Java中的wait()和sleep()是两个常用的方法,用于控制线程的执行状态。wait()方法用于线程间的协作和通信,必须在同步块中调用,并释放对象的锁;sleep()方法用于暂停线程执行一段时间,可以在任何地方调用,但不释放对象的锁。通过本文的学习,你应该能够更好地理解这两种方法的区别及其使用场景,并能够在实际编程中应用这些知识。

xycxycooo的博客 1228

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java多线程sleep() 和 wait() 有什么区别?

java多线程sleep() 和 wait() 有什么区别?

java1234的博客 991

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JAVA—sleep()和wait()的区别

JAVA—sleep()和wait()的区别 sleep()和wait()的区别 Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行

clam_clam的专栏 4万+

java中的 sleep() 和 wait() 有什么区别?

java中的 sleep() 和 wait() 有什么区别? 1、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而并...

梓鸿 1393

java中sleep()和wait()暂停线程的区别

则用于线程间的交互,会释放对象锁。在中断处理方面,两者都会抛出异常,但。主要用于线程的短暂暂停,不释放对象锁,而。

2201_75656709的博客 715

Java中sleep()与wait()区别

学习时正好碰到这两个方法,就查阅相关资料,并通过程序实现,进行区别一下: sleep():正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行。注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!! wait():则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了noti

行者小朱的博客 6万+

java 中的 wait()方法和 sleep()方法的区别

下列关于java 中的 wait()方法和 sleep()方法的区别描述错误的是?D A.wait()方法属于Object类,sleep()属于Thread类 B.调用wait()方法的时候,线程会放弃对象锁 C.调用sleep()方法的过程中,线程不会释放对象锁 D.sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程 sleep和wait的区别有: 1,这两个方法来自不同的类分...

屯庆的博客 3517

【转载】 java中的sleep()和wait()的区别

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会释放对象锁。 而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备 获取对象锁进入运行状态。 什么意思呢? 举个列子说明

BigSunn的博客 237

java中wait()和sleep()的区别

Java 必知必会 第 12 篇 difference between wait and sleep wait()和sleep()的区别 问题: 在线程里 wait() 和 sleep() 的区别? 我的理解是执行 wait() 语句后,该线程仍是运行态,并且会占用CPU,但是执行 sleep()后,该线程则不会占用CPU,对吗? 为什么需要 sleep() 和 wait() 两条语句:他们底层是...

十年互联网开发老兵,陪你一起学技术 527

java中的sleep()和wait的区别

       对于sleep( )方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。        sleep( )方法导致了程序暂停执行指定的时间,让出CPU该其他线程,但是他的监控状态仍然保持着,当指定的时间到了,又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会释放对象锁。        而当调用wait()方法的时候,...

勇敢牛牛 202

Java - sleep()和wait()有什么区别

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net sleep()方法属于Thread类,而wait()方法属于Object类。 sleep()方法使程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态;在调用sleep()方法的过程中,线...

了解➔熟悉➔掌握➔精通 3万+
上一篇: android app如何做到快速启动
下一篇: onCreate中的savedInstanceState有何具体作用
Dancingwing
博客等级 码龄14年 3粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值