其实两者都可以让线程暂停一段时间,但是本质的区别是[color=red]一个线程的运行状态控制[/color],[color=red]一个是线程之间的通讯的问题[/color]:
[color=blue]在java.lang.Thread类中,提供了sleep(),
而java.lang.Object类中提供了wait(), notify()和noti
转载
2023-08-31 09:07:32
136阅读
sleep和wait的区别是面试中一个非常常见的问题,因为从表象来看,好像sleep和wait都能使线程处于阻塞状态,但是却有着本质上的却别。sleep是线程类Thread的方法,但是wait是java对象老祖宗Object中的方法。sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。sleep方法不依赖于同步器synchronized,但是wait需要依赖synchron
转载
2023-09-07 22:18:29
47阅读
一句话概括:sleep和wait都会让出cpu时间,但是sleep会自动恢复,wait要通过notify才能进入等待状态第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩. 还有用法的上的不同是:sleep(milliseconds)可以用时间指定
转载
2023-08-23 07:54:07
43阅读
一.概念、原理、区别 Java
中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。
当有多个线程访问共享数据的时候,就需要对线程进行同步。线程中的几个主要方法的比较: &
转载
2023-08-23 09:56:18
113阅读
wait和sleep两者的区别sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备sleep()方法,是属于Thread类
转载
2023-08-08 10:44:10
75阅读
问题: sleep方法没有释放锁:不让出资源 wait方法释放了锁:使得其他线程可以使用同步控制块或者方法 sleep不释放锁 线程是进入阻塞状态还是就绪状态? sleep是不是还占着CPU,是互斥还是同步? 作者:大宽宽 首先说,虽然大家用Java Thread的api,但实际上Thread是OS提供的抽象和功能。这么理解会让整个问题更清楚。千万不要从类啊,静态方
转载
2024-07-25 13:36:48
20阅读
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会
转载
2017-07-17 17:40:00
270阅读
2评论
没问题:LockSupport、sleep和wait在多线程编程里作用不同,我一个一个给你讲,然后再对比着说,这样能讲得更透彻。 1. LockSupport LockSupport是Java并发包java.util.concurrent.locks里的一个类,主要用于线程的阻塞和唤醒。它提供了pa ...
/*
wait和sleep区别
1.wait可以指定也可以不用指定时间,
sleep必须指定时间
2.在同步中,对cpu的执行权释放不同
wait:释放执行权,释放锁;
sleep:释放执行权,不释放锁;
1.首先,要记住这个差别,“sleep是Thread类的方法,wait是Object类中定义的方法”。
尽管这两个方法都会影响线程的执行行为,但是本质上是有区别的。
2
转载
2023-08-23 07:55:39
47阅读
一.前言 关于并发编程这块, 线程的一些基础知识我们得搞明白, 本篇文章来说一下这两个方法的区别,对Android中的HandlerThread机制原理可以有更深的理解, HandlerThread源码理解,请查看笔者的这篇博客:HandlerThread源码理解_handlerthread 源码_bro
转载
2023-08-23 07:54:39
61阅读
引言前面我们已经介绍了 Java Thread 的实现以及用来进行线程等待的 Parker 和 ParkEvent 的实现,本篇文章中我们介绍一下 Parker 和 ParkEvent 的使用,即 Yield、Wait、Park、Sleep。Yield Wait Park Sleep和 Java 并发打交道,可能经常会有让当前线程先等一等,等待某一事件发生再继续向下执行的情况。而 Thread 的
转载
2024-07-18 14:54:11
110阅读
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象
2.3 Java 并发sleep() 和 wait() 区别?sleep()是线程类Thread的方法;作用是导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时候会自动恢复;调用sleep()不会释放对象锁。wait()是Object类的方法;对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池。只有针对此对象发出notify方法(或notifyAll
转载
2023-10-07 16:12:11
88阅读
New:初始状态,线程被创建,没有调用start()Runnable:运行状态,Java线程把操作系统中的就绪和运行两种状态统一称为“运行中”Blocked:阻塞,线程进入等待状态,线程因为某种原因,放弃了CPU的使用权Waiting:等待状态timed_waiting:超时等待状态,超时以后自动返回terminated:终止状态,当前线程执行完毕这里介绍多线程的几个状态,主要是想大家看下,在这几
转载
2023-08-23 07:55:34
74阅读
线程的睡眠和等待sleep是Thread类中提供的用于让线程暂停的方法,可以指定要暂停的时间(毫秒值)wait则是object中提供的方法,会让当前线程等待,直到被唤醒为止区别在于线程在阻塞的过程中是否会释放锁?sleep在阻塞的过程中是不释放锁的wait在阻塞的过程中是会释放锁的首先我们通过代码来看一下Sleep的特点public class SleepMethod {
public sta
转载
2023-08-23 07:56:23
83阅读
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象
转载
2024-02-26 14:34:15
55阅读
sleep:sleep是线程类Thread的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了cpu
转载
2023-09-22 17:52:57
62阅读
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
sleep不出让
转载
精选
2013-01-20 16:37:17
406阅读
sleep:本线程进入睡眠状态,不释放锁,睡眠时间结束后,会自动恢复运行 wait: 释放锁,本线程进入等待状态 notify: 随机唤醒一个在锁上等待的线程,例如:唤醒了线程A 在本线程执行结束后,或者释放锁后,A线程会获取到锁,继续执行 notifyAll: 唤醒所有在锁上等待的线程,让它们去竞 ...
转载
2021-10-12 17:40:00
125阅读
2评论
Java并发:await/wait与sleep、yield间的区别是否释放锁:调用sleep和yield的时候不释放当前线程所获得的锁,但是调用await/wait的时候却释放了其获取的锁并阻塞等待。 调用后何时恢复:# sleep让线程阻塞,且在指定的时间之内都不会执行,时间到了之后恢复到就绪状态,也不一定被立即调度执行;# yield只是让当前对象回到就绪状态,还是有可能马上被再次被
原创
2017-04-09 10:06:54
880阅读