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

多线程学习笔记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中的线程是通过`Thread`类或实现`Runnable`接口来创建的。你可以直接继承`Thread`类并重写`run()`方法,或者创建一个...

    java线程学习笔记

    Java线程学习笔记涉及了Java多线程编程的多个关键知识点,本篇知识点整理将详细解释每个概念及其在Java中的实现方式。 基本知识部分包含了Java线程编程的基础内容,它们是并发编程的基石。 任务Runnable是一个接口...

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

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

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

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

    JUC学习笔记 .md

    调用`sleep`会使线程进入休眠状态指定的时间,在此期间线程不会释放任何锁。 #### 4. 并发与并行 - **并发**: 指两个或多个事件在同一时间段内发生,这些事件可能交替执行。例如,两个线程在短时间内交替执行。 - ...

    FreeRTOS内核学习笔记

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

    VC++ 读书笔记

    ### VC++ MFC 学习笔记知识点概览 #### 一、Windows程序内部运行原理 - **WinMain函数**:这是Windows程序的入口点。它接收四个参数:`HINSTANCE`, `HINSTANCE`, `LPSTR`, 和 `int`。这些参数分别代表当前实例句柄...

    Java开发笔记

    **标题:** Java学习笔记 **描述:** 关于Java开发的一些笔记,旨在帮助大家共同学习进步。 **关键词:** Java开发、笔记、学习 #### 二、日期处理 1. **日期格式化**: Java提供了多种方式来格式化日期,包括使用`...

    Android学习笔记

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

    达内java课程笔记

    这份笔记涵盖了Java编程语言的核心知识点,是学习Java技术的宝贵资料,特别是对于面向对象编程、数据结构、核心API以及多线程等高级特性。通过学习这份笔记,读者可以深入理解Java的使用,并掌握在实际开发中应用...

    java编程思想读书笔记

    - `sleep()`方法可以让线程进入休眠状态,在指定的时间过后恢复执行。 - `suspend()`和`resume()`方法分别用来暂停和恢复线程,但是这种方式容易导致死锁问题,因此并不推荐使用。 - `wait()`和`notify()`/`...

    Java习题十.docx

    1. 模拟三个老师分发80份学习笔记的多线程程序,可以创建三个Thread子类,每个子类的run()方法中实现分发逻辑,确保线程安全地分配笔记。 2. 编写10个线程累加数字的程序,可以使用ExecutorService创建线程池,每个...

    关于实际开发中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