首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

(十一)sleep(1)、sleep(0)和sleep(1000)的区别

sleep(1000)比较容易理解,就是让线程睡眠1000毫秒,但是1000毫秒后,线程会执行吗,是立即执行吗? 本篇文章主要是探究以上的问题。 操作系统,CPU竞争有很多种策略。...因此可以看出,在抢 占式操作系统,操作系统假设所有的进程都是“人品很好”的,会主动退出 CPU 。...,操作系统会将当前线程从处理器上移除,时间片只能让给优先级相同或更高的线程,如果可运行队列的没有就绪线程或所有就绪线程的优先级均低于当前线程优先级,那么当前线程会继续执行,就像没有调用 Sleep(0...sleep(n)之所以在n秒内不会参与CPU竞争,是因为当线程调用sleep(n)的时候,线程是由运行态转入等待态,线程被放入等待队列,等待定时器n秒后的中断事件,当到达n秒计时后,线程才重新由等待态转入就绪态...,被放入就绪队列,等待队列的线程是不参与cpu竞争的,只有就绪队列的线程才会参与cpu竞争,所谓的cpu调度,就是根据一定的算法(优先级,FIFO等。。。)

5.9K42

JavaThread.sleep源码分析

本文将从源码角度分析Thread.sleep的实现机制。...JVM_END 由上面的代码我们可以看到,如果在调用sleep之前或在sleep过程sleep线程被interrupt了,则该sleep方法会抛出InterruptedException异常。...比如,在park方法,如果检测到_event值不等于0,则说明unpark方法被调用过,不用等待了。...如果park方法被调用过,则需要再进一步加锁检查_nParked字段,如果_nParked还是不等于0,说明该线程确实是在堵塞等待过程,调用pthread_cond_signal方法,告诉这个线程,其可以从阻塞状态退出了...有关Thread.interrupt方法是如何调用_SleepEvent的unpark方法,使Thread.sleep从sleeping状态退出的,请查看文章: JavaThread.interrupt

74130

Javasleep和wait的区别

1、sleep方法是Thread类的静态方法; wait方法是Object类的成员方法 2、sleep方法使当前线程暂停执行指定的时间,让出cpu给其他线程,但是它的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态...在调用sleep方法后,线程不会释放对象锁; 而当调用wait方法时,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池处于准备状态。...3、sleep方法有可能会抛出异常,所以需要进行异常处理; wait方法不需要处理 4、sleep方法可以在任何地方使用; wait方法只能在同步方法和同步代码块中使用 Java中线程的生命周期图谱如下所示

3.2K21

Javasleep()和wait()方法的区别

引言在Java编程sleep()和wait()都是用于线程的控制和调度的方法。然而,它们之间有着重要的区别。...本文将详细介绍Javasleep()和wait()方法的区别,帮助读者更好地理解和正确使用这两种方法。...图片2. sleep()方法sleep()方法是Thread类的静态方法,用于使线程进入睡眠状态,暂停一段时间的执行。sleep()方法接受一个以毫秒为单位的时间参数,指定线程休眠的持续时间。...需要注意的是,sleep()方法不会释放对象的锁,因此其他线程无法访问被sleep()的线程所持有的对象。...通过本文的介绍,相信读者对Javasleep()和wait()方法的区别有了更清晰的认识。合理使用这两种方法,可以更好地控制和调度线程,提高程序的效率和可靠性。

36210

你能说出多线程 sleep、yield、join 的用法及 sleep与wait区别吗?

作者:noteless cnblogs.com/noteless/p/10443446.html Object的wait、notify、notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑...另外,你应该已经注意到sleep方法都有static修饰,既然是静态方法,在Thread的惯例就是针对于:当前线程,当前线程,当前线程 yield方法 对于sleep或者wait方法,他们都将进入特定的状态...在方法深入介绍前先看个例子 一个线程,循环5次,每次sleep 1s,主线程打印信息 从结果可以看到,主线程总是在线程执行之后,才会执行,也就是主线程在等待我们创建的这个线程结束,结束了之后才会继续进行...结论: 主线程main调用启动线程(调用start),然后调用该线程的join方法,可以达到主线程等待工作线程运行结束才执行的效果,并且join要在start调用后 如何做到的? ?...,被中断后都会抛出异常 wait是Object的方法,sleep是Thread的方法 wait必须在同步执行,sleep不需要(join底层依赖wait,但是不需要在同步,因为join方法就是synchronized

1.4K20

javasleep和wait的方法区别

区别 所属对象不同:sleep方法属于Thread类的,wait方法属于object对象的。 唤醒方式不同:interrupt()方法可以终端 sleep 和wait方法。...notify和ntifyall方法可以唤醒wait方法的暂停,sleep可以设置指定的时间后唤醒。 使用地方不同:sleep方法可以使用在非同步方法,wait方法必须使用在同步代码块。...方法属性不同:wait是实例方法,而sleep是Thread 的静态方法。 锁资源占用情况不同:wait会释放对象锁,而sleep不会释放对象锁。...知识点补充 线程的六大状态: 1)六大状态概述: NEW:线程刚创建 RUNNABLE:在JVM中正在运行的线程 BLOCKED:线程处于阻塞状态,等待监视锁,可以重新进行同步代码块执行...WAITING:等待状态 TIMED_WAITING:调用sleep() join() wait()方法可能导致线程处于等待状态 TERMINATED:线程执行完毕,已经退出 2)六大状态图:

50720

linuxsleep函数和delay函数

其实在linux的delay函数,道理是一样的,都是通过cpu执行空指令来达到延时的目的,但是对于操作系统这种多线程进行的方式来说,在需要延时的时候,可以通过将进程挂起的方式来实现延时。...这就是sleep函数。 sleep和delay的区别 最明显也最重要的区别就是,在执行delay的时候,是执行了空指令,虽说是空的,但是还是会占用硬件资源,cpu要进行运算。...而sleep是将此进程挂起,cpu还会执行其他进程,待到时间到,再恢复此进程。...两者对比可以看出,sleep执行的时候,节省系统资源,但是弊端是sleep的定时并没有那么准确,因为是通过进程切换来实现的,delay则是严格按照机器周期来计算,而且sleep不能适用于时间太短的延时,...应用场景 当我们希望执行一个脚本之后延时五秒再执行另外一个脚本,这个时候就可以用sleep。 当我们在设置一个芯片的各种引脚时序的时候,间隔较短且要求更准确,就需要delay。

3.6K10

Linuxsleep、usleep、nanosleep、poll和select

在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?...下表列出了这几个函数间的异同点,可作为参考: 性质 精准度 线程安全 信号安全 sleep libc库函数 秒 是 不能和alarm同时使用 有些是基于alarm实现的,所以不能和alarm同时使用...也可实现实际睡眠时长不小于参数指定时长 clock_nanosleep 系统调用 纳秒 是 不确定 区别于nanosleep,可选择为相对或绝对时间,其次是可以选择使用哪个时钟 poll 系统调用 毫秒 是 是 在协程库libco可安全使用... * 1000 }; while ((-1 == nanosleep(&ts, &ts)) && (EINTR == errno)); } 3) 基于poll的秒级封装 // 可libco协程库安全使用...(std::chrono::microseconds(1000)); #endif // __cplusplus >= 201103L 上述介绍的sleep函数均不方便控制它们提前结束,如果需要这种

4.9K40

LinuxSleep和Wait命令的使用方式

Sleep命令 sleep 命令会暂停指定的时间。它通常用于脚本,但也适用于命令行。在下面的示例sleep 在两个 date 命令之间暂停30秒。...但也可以通过在参数添加一个字符来让它休眠不同的时间: 10s = 10 seconds 1m = 1 minute 2h = 2 hours 3d = 3 days [root@localhost ~...在下面的示例sleep 6 命令首先完成,脚本结束,但其他两个 sleep 进程将继续在后台运行几秒钟。 #!.../bin/bash sleep 15 & sleep 9 & sleep 6 & wait -n echo “First job has been completed.”...注意:等待的进程必须是“子进程”(在当前 shell 启动的进程)。 总结 两者都可以在脚本或命令行中使用。但是,wait 命令仅适用于在后台运行的进程。

2.7K40

LinuxSleep和Wait命令的使用方式

Sleep命令 sleep 命令会暂停指定的时间。它通常用于脚本,但也适用于命令行。在下面的示例sleep 在两个 date 命令之间暂停30秒。...但也可以通过在参数添加一个字符来让它休眠不同的时间: 10s = 10 seconds 1m = 1 minute 2h = 2 hours 3d = 3 days [root@localhost ~...在下面的示例sleep 6 命令首先完成,脚本结束,但其他两个 sleep 进程将继续在后台运行几秒钟。 #!.../bin/bash sleep 15 & sleep 9 & sleep 6 & wait -n echo “First job has been completed.”...注意:等待的进程必须是“子进程”(在当前 shell 启动的进程)。 总结 两者都可以在脚本或命令行中使用。但是,wait 命令仅适用于在后台运行的进程。

2.5K20

关于线程sleep,wait,yield的区别

在Java的线程里面有几个比较常见的方法如sleep,wait,yield,但是你知道它们之间的区别吗?...首先这三种方法都可以用来暂停线程,sleep和yield方法都定义在Thread类,而wait方法则定义在Object类,wait和sleep的关键区别在于前者是用来做线程间通信交流用的,而后者是为了让当前线程在一定的周期内休眠...,此外调用wait方法会释放当前线程的锁,而sleep方法则绝不会释放任何监视器。...这里有一个非常基础的概念,一个进程可以通过上下文切换来让另一个进程也有机会运行,即使在单核的系统,类似于进程切换,多个线程也可以在Jvm进程自由切换。...当线程sleep调用时,会发生什么?

1.5K60
领券