`
shadowred
  • 浏览: 5658 次
社区版块
存档分类
最新评论

多线程学习笔记3 - 线程休眠

    博客分类:
  • java
阅读更多

java.lang.Thread类的sleep()方法使得当前线程在指定的时间长度(毫秒单位)内暂停执行。当参数为负数时会抛出IllegalArgumentException异常。

 

下面是调用sleep()方法暂停主线程2秒的例子

public class ThreadSleep {
 
    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();
        Thread.sleep(2000);
        System.out.println("Sleep time in ms = "+(System.currentTimeMillis()-start));
         
    }
 
}

 

当你运行这段程序后你会发现休眠的时间略大于2秒。为什么呢?与Thread.sleep的工作方式有关(不同VM工作方式不一样),与操作系统有关(它实现了线程调度)。

 

线程休眠的注意点

1.总是暂停当前线程执行

2.线程休眠以及线程唤醒由操作系统决定。系统处于空闲状态下,休眠时间更接近用户指定的时间,反之会略多

3.线程休眠时并不会失去之前它所获得的线程锁

4.当处于休眠状态的线程被打断时,会抛出InterruptedException异常

 

线程工作方式

线程通过sleep方法与线程调度器交互,请求在指定时间区间内进入等待状态。当等待了指定时间区间后,线程的状态被改为可执行,然后等待调度器调度。所以线程的休眠时间依赖于线程调度器,它是由操作系统实现的。

 

学习笔记4中我们将探讨线程Join。

 

参考:http://www.journaldev.com/1079/java-thread-tutorial/

分享到:
评论

相关推荐

    java多线程笔记

    Java线程:线程的调度-休眠 13 Java线程:线程的调度-优先级 16 Java线程:线程的调度-让步 19 Java线程:线程的调度-合并 22 Java线程:线程的调度-终止线程 25 Java线程:线程的调度-守护线程 28 Java线程:线程组...

    黑莓学习笔记之一----进度条

    本篇"黑莓学习笔记之一----进度条"着重讨论了如何在黑莓(BlackBerry)平台上实现和使用进度条功能。Blackberry是一个历史悠久的移动操作系统,尽管现在已被更现代的系统取代,但其开发经验对于理解移动应用的UI设计...

    java基础笔记,多线程、反射、java8

    Java提供了丰富的线程控制方法,如start()启动线程,sleep()使线程休眠,join()等待线程结束,synchronized关键字用于线程同步,防止数据竞争。此外,ExecutorService和Future接口提供了一种更灵活的线程管理机制,...

    FreeRTOS内核学习笔记

    本学习笔记将聚焦于FreeRTOS的核心组件和机制,包括任务管理、内存管理、信号量、消息队列、软件定时器、任务通知以及事件标志组和低功耗管理。 首先,**任务管理**是FreeRTOS的核心功能之一。在FreeRTOS中,任务是...

    Android学习笔记

    Android 学习笔记主要涵盖两个关键知识点:Android 屏幕禁止休眠的方法和Android 异步操作的实现,特别是使用AsyncTask。 首先,我们来探讨如何在Android应用中阻止屏幕休眠。在Android中,为了节省电池并遵循用户...

    关于实际开发中DHCP问题学习笔记

    一旦STB成功获取IP,对应的线程会被设置为休眠,并设定一个alarm信号。当续约时间到达,该线程会被唤醒,以发起续约请求。 有时,STB在获得IP后仍继续发送Discover请求,这可能是由于编程错误或是特定硬件的特性,...

    移动CPU技术资料大全

    3. 多线程技术:如Intel的超线程(Hyper-Threading),让单核模拟双核,提高多任务处理能力。 4. GPU集成:现代移动CPU往往集成图形处理器,实现更好的图形处理和游戏性能。 四、主流移动CPU厂商及产品 1. 英特尔:...

    linux-3.0.86-20150324.tgz

    3.0.86可能包含调度算法的优化,以更好地处理多任务和多线程环境。 8. **网络堆栈**:网络通信是现代操作系统的关键部分,3.0.86可能包含了对TCP/IP协议栈的改进,提升网络性能和连接稳定性。 9. **虚拟化支持**:...

    libusb-1.0.9

    首先声明,这是看到国外论坛上的学习文章后,独立翻译过来作为笔记用,加入部分自我理解,并且全部原创。 介绍: libusb是一个开源库,可以帮助开发者在用户空间的层面上与UBS设备进行通讯。如果想了解更多,可以...

    MFC_Study_01

    参数`dwMilliseconds`指定线程休眠的毫秒数,如果传入`INFINITE`,线程将无限期等待,直到被其他事件唤醒。 6. **SwitchToThread**: 此函数让操作系统从当前线程切换到另一个线程,但并不终止当前线程的可调度状态...

Global site tag (gtag.js) - Google Analytics