Java中LockSupport.parkNanos与Sleep的区别是什么? 20C

Java中LockSupport.parkNanos与Sleep都可以使当前线程阻塞指定时间,那么除了是否抛出interrupt异常以外,这两者的区别是什么呢?在JVM中两者对于CPU的调度有区别吗?在实际使用中,是推荐使用LockSupport.parkNanos还是Sleep呢?

1个回答

为什么比较这两个呢?先简单说下区别,其它的你可以自行度娘一下这两个的原理就明白 了。
LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题。因为park() 和 unpark()有许可的存在;调用 park() 的线程和另一个试图将其 unpark() 的线程之间的竞争将保持活性。实现原理是利用java的unsafe接口调用本地方法实现。
Sleep()是单纯的在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”,使当前线程进入阻塞状态,在指定时间内不会执行。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java中的sleep()和wait()的区别
1.对于sleep()方法,是属于Thread类中的。而wait()方法,则是属于Object类中的。 2.最主要是sleep方法没有释放锁,而 wait 方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)   synchronized(x){
Java中sleep和wait的区别
sleep要放在trycatch中,wait要放入循环中 ,wait是Object类中定义的方法”。 Thread.sleep不会导致锁行为的改变,如果当前线程是拥有锁的,那么Thread.sleep不会让线程释放锁。 Thread.sleep和Object.wait都会暂停当前的线程,对于CPU资源来说,不管是哪种方式暂停的线程,都表示它暂时不再需要CPU的执行时间。OS会将执行时间分
java中sleep和wait的区别
1.来源不一样 sleep来自Thread wait来自Object 2.对象锁的处理不一样 sleep不会释放对象锁,时间到了自动运行 wait会释放对象锁,必须调用xxx.class.notify()才可以进入运行态 ...
Java 中的sleep()和wait()的区别
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会释放对象锁。 而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只...
Java中wait和sleep的区别
1.概述 在这篇简短的文章中,我们将看一下核心Java 中的标准sleep()和wait()方法,并了解它们之间的差异和相似之处。 2. wait和sleep之间的一般差异 简单地说,wait()是一个用于线程同步的实例方法。 它可以在任何对象上调用,因为它在java.lang.Object上定义,但它只能从synchronized块中调用。它释放对象的锁定,以便另一个线程可以跳入并获取锁。 另一...
java中的wait()方法和sleep()方法的区别是什么?| Java 基础
java中的wait()方法和sleep()方法的区别是什么? 简单说:sleep由线程自动唤醒,wait必须显示用代码唤醒。 sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行,例如: try{ System.out.println("I'mgoing to bed"); Th
java wait()和sleep()区别
区别1: wait()是Object类的方法,而sleep()是Thread类方法; 区别2: wait()用于线程间的通信,使用此方法会使当前线程释放锁,直到等待其他线程调用方法notify()或notifyAll()方法时才醒来,也可给他设置一个时间,让线程醒来。 sleep()不涉及线程通信,不释放当前线程锁,仅当前线程暂停指定的时间,时间到就醒来。
java 中的 wait()方法和 sleep()方法的区别是什么?
对于sleep()方法,它是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过程中,线程不会释放对象锁。 而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用not
sleep()和Sleep()的区别
我知道rnsleep()在dos.hrn单位是秒rnSleep()在windows.hrn单位是毫秒rn他们还有起他区别吗?rn一个是dos操作系统下用,另一个是windows下用?rn
java线程中wait和sleep方法的区别
java线程中wait和sleep方法的区别
java中sleep和wait方法区别
对于sleep方法,该方法属于Thread类,而wait方法,属于Object类。 sleep方法导致了程序暂停执行指定的时间,但会保持监控状态,线程不会释放对象锁。   当调用wait方法的时候,线程会释放对象锁,只有执行notify方法后,本线程才进入运行状态。   main方法,调用另一个类中方法时,另一个类中方法,Thread.currentThread().getName(),...
Java 中 sleep 方法和 wait 方法的区别
Java 中 sleep 方法和 wait 方法的区别?虽然两者都是用来暂停当前运行的线程,但是 sleep() 实际上只是短暂停顿,因为它不会释放锁,而 wait() 意味着条件等待,这就是为什么该方法要释放锁,因为只有这样,其他等待的线程才能在满足条件时获取到该锁。...
java中wait()和sleep()方法的区别
public static void main(String[] args) { new Thread(new Thread1()).start(); try { Thread.sleep(5000); } catch (InterruptedException e) { } new Threa...
java线程中sleep()与wait()的区别?
sleep()不释放锁,必须要指定时间 wait()释放锁,可以指定时间,也可以不指定时间。
关于java中sleep()和wait()方法的区别
最近由于换工作,在多线程这一块被很多大佬虐得遍体是伤怀疑自我。 进入正题,关于java中sleep()和wait()区别主要如下: 1、若对象资源被同步或锁住,sleep()方法会主动让出cpu,然后cpu可以去执行其他任务,直到sleep()方法给定的时间截止,然后cpu会重新回到该线程继续向下执行。但sleep()并不会释放锁或让出同步资源。wait()方法会让当前线程暂时让出同步资源,以
java中wait和sleep方法的区别
最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。 此处我想理一下Java多线程的基础知识:  - Java的多线程锁是挂在对象上的,并不是在方法上的。即每个对象都有一个锁,当遇到类似synchronized的同步需要时,就会监视(monitor)每个想使用本对象的线程按照一定的规则来访问,规则也就是在同一时间内只能有一个线...
java中多线程(1)之sleep与wait的区别
sleep是Thread中的函数,JDK中对应的源码如下:public static void sleep(long millis) throws InterruptedException { Thread.sleep(millis, 0); }public static void sleep(long millis, int nanos) throws Interr
Java线程中使用 sleep()和wait()区别
多线程
Java多线程中wait与sleep的使用与区别
wait与sleep均为Java多线程中会使用到的两个延迟函数。 wait()是Object类的方法,所以每一个对象能使用wait()方法。 sleep()是Thread类中的静态方法 这两者一起比较的重点主要在于调用这两个方法都可以使当前调用线程暂停执行。 但是sleep不会释放锁,但会让出cpu,sleep会在指定的休眠时间后自动唤醒。 wait则会释放锁,让出系统资源,并且加入wait se...
java 中的sleep()和wait() 等的区别和详解
1、sleep()  使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完
java 中的 wait()方法和 sleep()方法的区别
下列关于java 中的 wait()方法和 sleep()方法的区别描述错误的是?D A.wait()方法属于Object类,sleep()属于Thread类 B.调用wait()方法的时候,线程会放弃对象锁 C.调用sleep()方法的过程中,线程不会释放对象锁 D.sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程 sleep和wait的区别有: 1,这两个方法来自不同的类分...
Java sleep wait 在多线程中的区别
sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll. 区别一: sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。 wait是Object类的方法,用来线程间的通信,
java并发编程:wait和sleep的区别
1:wait()可以指定时间也可以不指定时间,sleep必须指定时间2:在同步中时,对CPU的执行权和锁的处理不同:wait()释放CPU的执行权,释放锁;sleep()释放CPU的执行权,但是不释放锁...
java多线程 wait与sleep的区别
java中的wait和sleep都可用于暂停当前线程的执行,执行另外一个线程。 来看一个使用wait()来实现打印ABAB....的程序: package com.lql.thread2; public class Print1 implements Runnable { public int count = 10; @Override public void run() {
Java面试题之sleep与wait的区别
sleep与wait的区别: sleep:让线程进入休眠状态,让出CPU的时间片,不释放对象监视器的所有权(对象锁) wait:让线程进入等待状态,让出CPU的时间片,并释放对象监视器的所有权,等待其他线程通过notify方法来唤醒 notify方法:随机唤醒其中一个处在等待状态的线程 notifyAll方法:唤醒所有处在等待状态的线程 ...
【Java】sleep和wait区别总结
来源:https://blog.csdn.net/zlfprogram/article/details/77257373一、来源类: sleep是Thread类的静态方法; wait是Object的方法,可以对任意一个对象调用wait方法二、使用范围: sleep可以在任何地方使用,必须捕获异常; wait只能在同步控制方法或者同步控制块里面使用,不需要捕获异常三、锁: sleep不释放锁,不出让...
java多线程 sleep()和wait()的区别
接触了一些多线程的东西,还是从java入手吧。rnrn相信看这篇文章的朋友都已经知道进程和线程的区别,也都知道了为什么要使用多线程了。rnrn这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll.rnrn区别一:rnrnsleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。rnrnwait是Object类的方法,用来线程间的通信,这个方法会使当前拥有该对象锁的进程等待知道其他线程调用notify方法时再醒来,不过你也可以给他指定一个时间,自动醒来。这个方法主要是用走不同线程之间的调度的。rnrn区别二 :rnrn关于锁的释放 ,在这里假设大家已经知道了锁的概念及其意义。调用sleep方法不会释放锁(自己的感觉是sleep方法本来就是和锁没有关系的,因为他是一个线程用于管理自己的方法,不涉及线程通信)rnrnJDK 7 中的解释:rnrn“public static void sleep(long millis)rnrnthrows InterruptedExceptionrnCauses the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers.The thread does not lose ownership of any monitors.rnrnpublic final void wait() throws InterruptedExceptionrnCauses the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object. In other words, this method behaves exactly as if it simply performs the call wait(0).The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method the notifyAll method. The thread then waits until it can re-obtain ownership of the monitor and resumes execution.“rn调用wait方法会释放当前线程的锁(其实线程间的通信是靠对象来管理的,所有操作一个对象的线程是这个对象通过自己的wait方法来管理的,就好像这个对象是电视机,三个人是三个线程,那么电视机的遥控器就是这个锁,假如现在A拿着遥控器,电视机调用wait方法,那么A就交出自己的遥控器,由jVM虚拟机调度,遥控器该交给谁。)【我想到一个好玩的例子:如果A拿遥控器的期间,他可以用自己的sleep每隔十分钟调一次电视台,而在他调台休息的十分钟期间,遥控器还在他的手上~】rnrn区别三:rnrn使用区域rnrn由于wait函数的特殊意义,所以他是应该放在同步语句块中的,这样才有意义 。rnrn注意:两个方法都需要抛出异常rnrn个人见解:有sleep和wait的第二个区别,引起了我对Java线程机制的一个疑问,目前还没有看过JDk这方面的源码(其实看了,是木有看懂),线程的同步管理,是不是由对象在调度,如果是对象在调度,那么JDK 1.5新引入的ReentrantLock机制就比synchronized关键字更值得提倡。因为他更能反映出这么一个机制来。好多人不能理解wait和sleep的区别,我认为就是因为synchronized关键字的影响。当然自己还不懂JAVA的线程具体实现,留作疑问以后有时间继续研究吧rnrn这个小专题貌似是学长学姐们经常面面试的题目,感谢他们的经验分享~rnrn原文地址:http://software.intel.com/zh-cn/blogs/2011/12/16/java-sleepwait/rn
Java笔记——sleep和wait的区别
努力学习往Java程序员迈进 笔记——sleep和wait的区别   这两个方法来自不同的类,分别是Thread和Object。 自主钥匙sleep方法没有释放锁,而wait方法释放了锁,使得敏感词线程可以使用同步控制块或者方法。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。 synchronized(x){ x...
java 线程 wait和sleep的区别
Java程序中wait 和 sleep都会造成某种形式的暂停,它们可以满足不同的需要。 1 wait()方法用于线程间通信,如果等待条件为真且其它线程被唤醒时它会释放锁, 2 sleep()方法仅仅释放CPU资源或者让当前线程停止执行一段时间,但不会释放锁
Java多线程-wait()与sleep()的区别
1. wait() 当一个线程调用一个共享变量的wait()方法时,该调用线程挂起,并释放通过同步块获取的上的锁. 直到发生下面几件事情之一才返回: 其他线程调用了该共享对象的notify()或者notifyAll()方法; 其他线程调用了该线程的interrupt()方法,该线程抛出InterruptedExce ption 异常返回。 获取队列里面的元素 另外需要注意的是,如果调用wa...
【java基础】sleep和wait的区别
本文原地址:https://www.dyzhello.club/static/page/readArticle.html?id=15448 原创内容转载请注明 wait(),sleep() 的区别 wait():Object类中定义的实例方法。在指定对象上调用wait方法会让当前线程进入等待状态(前提是当前线程持有该对象的monitor。ps:java中锁是对monitor的实现),此时当前...
请教:sleep()和wait()的区别是什么??谢谢
谢谢
Thread中sleep()与yield()的区别
package com.mxx.demo; /*  * sleep:会强制让当前线程进入等待,即当前线程的状态为:等待、阻塞  * yield:会先去判断是否有和当前线程相同优先级的线程,如果没有,则自己继续执行,如果  *       有,则将CPU资源让给它,然后进入到就绪状态。  *  */ class MyThread1 extends Thread {   
多线程中wait和sleep的区别
wait和sleep的区别 wait() wait()是object中的方法,可让线程进行等待,假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该对象的等待池中,进入到等待池中的线程不会去竞争该对象的锁。 当wait()中不传参数时,jvm会默认会传一个参数0,表示永久阻塞,若传入参数,则表示在指定的时间内阻塞。 wait()方法由于要释放锁,所以得写在...
线程中Sleep()、Wait()区别
线程: Sleep()、Wait():调用某个对象的wait()方法,相当于让当前线程交出此对象的锁monitor,然后进入等待状态,等待后续再次获得此对象的锁(Thread类中的sleep方法使当前线程暂停执行一段时间,从而让其他线程有机会继续执行,但它并不释放对象锁); Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实
多线程中wait与sleep的区别
1 sleep 可以让线程休眠,但是不会释放锁资源,休眠时间结束以后继续执行 2 wait()让当前线程释放cpu执行权限,并释放锁资源
多线程同步中sleep与wait区别
1、函数 wait是Object的一个函数,指线程处于进入等待状态,此时线程不占用任何资源,不增加时间限制。wait可以被notify和notifyAll函数唤醒(这两个也是Object的函数)。 sleep则是Thread的一个函数,指线程被调用时,占着CPU不工作.此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。 所以 sleep(100L)意思
多线程中 wait和sleep的区别
多线程中 wait和sleep的区别
java中sleep和wait的区别,start和run的区别
sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控 状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。 wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对 象锁进入运...
线程中sleep()和wait()的区别
sleep()和wait()的区别 sleep() sleep()方法是Thread的静态方法,提供了两种sleep的方式可让我们更灵活的控制,目的是为了使线程睡眠一段时间,自然醒后继续执行,不存在继续竞争,因为期间并没有释放同步锁. public static native void sleep(long millis) throws InterruptedException; pub...
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数