`

java中Thread.sleep()

 
阅读更多

今天看到一篇文章,是说java的 Thread.sleep()方法的, 曾经没注意,sleep(0)不写不就完了,脱裤子放屁??

不是这回事啊!!记录下来备忘

 

转载地址:http://www.cnblogs.com/guodongli/archive/2011/04/07/2007721.html

 

有人提到过两个问题:

1、假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?

2、某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?

这两个问题在http://dev.tot.name/java/html/20090225/20090225101644.htm上做了解释,作者举的ppmm的例子蛮生动的哈。归结起来就是说:在windows环境下,进程调度是抢占式的。一个进程在运行态时调用sleep(),进入等待态,睡眠结束以后,并不是直接回到运行态,而是进入就绪队列,要等到其他进程放弃时间片后才能重新进入运行态。所以sleep(1000),在1000ms以后,线程不一定会被唤醒。sleep(0)可以看成一个运行态的进程产生一个中断,由运行态直接转入就绪态。这样做是给其他就绪态进程使用时间片的机会。总之,还是操作系统中运行态、就绪态和等待态相互转化的问题。

 

 

分享到:
评论

相关推荐

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    - 在循环处理文件时加入适当的延迟(如`Thread.sleep(1000)`),避免短时间内创建大量对象。 - 定期清理不再使用的对象,减少内存占用。 通过上述方法,可以有效地避免或减轻“java.lang.OutOfMemoryError: Java ...

    JVM线程状态和Thread.sleep的实现原理探究.pdf

    在探究JVM线程状态以及Thread.sleep的实现原理时,我们首先需要了解Java线程与操作系统线程之间的关系。在Java虚拟机(JVM)中,每个线程通常都是以一对一的关系映射到操作系统线程上的。然而,尽管两者在实现上是...

    java_Thread.rar_java thread runable_thread runable

    在Java中,有两种方式来创建和管理线程:通过继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当你需要一个具有自定义行为的线程时,可以创建一个新的类,该类继承自`Thread`。重写`Thread`类的`run()`...

    Java Thread之Sleep()使用方法总结

    Java Thread之Sleep()使用方法总结是Java多线程编程中的一种常见方法,用于使当前线程休眠,进入阻塞状态,暂停执行。这个方法非常重要,因为它可以帮助开发者控制线程的执行顺序,避免线程冲突,并提高程序的可读性...

    3-Threads-Runnable-Sleep-Sync:并行编程示例:3使用Thread.sleep()的可运行实现的线程同步

    它是一个静态方法,位于`java.lang.Thread`类中。当在某个线程中调用`sleep()`时,该线程会暂停执行指定的毫秒数,让出CPU时间片给其他线程。这样可以避免线程过度占用CPU资源,实现线程间的协作,也可以用于模拟...

    javathread.part05.rar

    `javathread.part05`的压缩包可能详细讲解了这些高级话题,并通过实例代码演示了如何在实际项目中应用。解压后,你可以深入学习线程的调度策略、线程局部变量(`ThreadLocal`)、线程优先级以及其他并发工具类的使用...

    Java课件\thread.rar

    在Java中,线程是通过`Thread`类或实现`Runnable`接口来创建和管理的。本课件"thread.rar"包含的视频教程,旨在帮助学习者深入理解和应用Java线程技术。 1. **线程的创建** - **通过`Thread`类创建**:直接继承`...

    java sleep和wait的解惑.docx

    System.out.println("Thread is going to sleep..."); Thread.sleep(3000); System.out.println("Thread woke up!"); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); // 示例2: ...

    java_Thread.rar_java 多线程_java多线程

    在Java中,通过实现Runnable接口或者继承Thread类可以创建并运行多线程。本资料"java_Thread.rar"提供了一些Java多线程的实践案例,对于深入理解和应用Java多线程技术具有很高的参考价值。 首先,我们要理解线程的...

    javathread.part104.rar

    以上只是部分Java线程编程的核心知识点,`javathread.part104.rar`中可能还会包含更多高级主题,如线程池的配置与优化、线程通信(例如`join()`, `Thread.sleep()`, `yield()`)以及并发工具类的深入探讨。...

    JavaThread.pdf

    - 在Java中,可以继承Thread类来创建线程,也可以实现Runnable接口来定义线程要执行的任务。 - 示例代码中展示了如何创建一个继承自Thread类的MyThread线程和一个实现Runnable接口的MyRunnable对象。 - 启动线程...

    java_经典Sleep与异步同步并发编程

    在Java中,`Thread.sleep(long millis)` 方法可以使当前正在执行的线程暂停执行指定的时间(以毫秒为单位),从而让出CPU给其他线程使用。在此期间,线程处于阻塞状态。通过调用线程的 `interrupt()` 方法可以提前...

    java面试宝典.docx

    #### 一、Thread.sleep()与Object.wait() 1. **Thread.sleep()** - `Thread.sleep()`方法可以让当前正在执行的线程暂停执行指定的时间(毫秒),然后继续执行。 - 此方法是`Thread`类的一个静态方法。 - 可以抛...

    javathread.part02.rar

    `javathread.part02.rar`这个压缩包可能包含的是关于Java线程深入理解和实践的材料,可能是代码示例、课件或教程。 Java线程的创建主要有两种方式:通过实现Runnable接口和继承Thread类。实现Runnable接口更为灵活...

    5-2_Java底层开发技术(Java高级).pdf

    在 Java 中,多线程可以通过继承 Thread 类或实现 Runnable 接口来实现。 Thread 类提供了多种方法来操作线程,例如 start() 方法启动线程,join() 方法等待线程结束,sleep() 方法使线程休眠等。 线程操作方法是多...

    深入浅出 Java 多线程.pdf

    在 Java 中,多线程编程是通过 Thread 类和 Runnable 接口来实现的。 Thread 类是一个基本的线程类,它提供了许多有用的方法来控制线程的执行,如 start() 方法、join() 方法、sleep() 方法等。Runnable 接口是一个...

    控制台模拟时钟

    在Java编程语言中,我们可以利用`while`循环和`Thread.sleep()`方法来模拟一个控制台时钟。这个控制台时钟会在终端或者命令行界面显示时间的流逝,尽管没有图形用户界面,但仍然能实现基本的计时功能。下面我们将...

    无限循环遇到sleep

    在Java编程语言中,我们可以使用`Thread.sleep(millisecond)`方法让当前线程暂停指定的毫秒数。这个方法是`java.lang.Thread`类的一个静态方法,它可以用来实现时间间隔,使代码执行具有延时性。在无限循环中使用`...

    java中的线程休眠例子

    在Java中,线程休眠主要通过`Thread.sleep()`方法实现。 1. **Thread.sleep()方法详解** `Thread.sleep(long millis)`方法用于使当前正在执行的线程暂停执行,参数`millis`代表线程将睡眠的毫秒数。如果参数是0,...

    JAVA面试题.doc

    11. Java 中的多线程可以使用 sleep()、suspend()、wait()、yield() 等方法来控制线程的执行。 八、 Log4j 12. Log4j 是一个 Java 日志框架,提供了日志记录和输出功能。Log4j 的优先级从高到低的排序是 error>...

Global site tag (gtag.js) - Google Analytics