文档章节

并发编程实战 1.4. 线程的休眠与恢复 - sleep()

火犀牛
 火犀牛
发布于 2016/05/10 22:23
字数 399
阅读 2
收藏 0
线程睡眠可以使用 Thread.sleep() 或者使用 TimeUtil.SECOND.sleep()方法

范例:循环打印日期, 5秒后打断

package com.rr.current2.c1_4_sleep.test;

import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * Created by Isaac on 16-5-10.
 */
public class Task implements Runnable  {

    @Override
    public void run() {

        for(int i = 0 ; i++ < 10;){
            System.out.printf("当前的时间为: %s\r\n", new Date());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                System.out.printf("%s 被打断!\r\n",Thread.currentThread().getName());
            }
        }
    }
}

测试:

package com.rr.current2.c1_4_sleep.test;

import java.util.concurrent.TimeUnit;

/**
 * Created by Isaac on 16-5-10.
 * 睡眠可以使用 Thread.sleep() 或者使用 TimeUtil.SECOND.sleep()
 * 范例: 循环打印日期, 5秒后打断
 */
public class Test {
    public static void main(String[] args) {
        Thread thread = new Thread(new Task());
        thread.start();
        System.out.println("main start!");
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        thread.interrupt();
        System.out.println("main end!");
    }
}

结果:

main start!
当前的时间为: Tue May 10 22:14:52 CST 2016
当前的时间为: Tue May 10 22:14:53 CST 2016
当前的时间为: Tue May 10 22:14:54 CST 2016
当前的时间为: Tue May 10 22:14:55 CST 2016
当前的时间为: Tue May 10 22:14:56 CST 2016
main end!
Thread-0 被打断!
当前的时间为: Tue May 10 22:14:57 CST 2016
当前的时间为: Tue May 10 22:14:58 CST 2016
当前的时间为: Tue May 10 22:14:59 CST 2016
当前的时间为: Tue May 10 22:15:00 CST 2016
当前的时间为: Tue May 10 22:15:01 CST 2016

补充yield:yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。通常来讲,yield()方法方法只做调试使用。

© 著作权归作者所有

共有 人打赏支持
火犀牛
粉丝 0
博文 27
码字总数 12180
作品 0
海淀
程序员
私信 提问
Java并发编程初级篇(三):线程状态以及状态转换过程

线程状态: NEW:当一个线程被创建之初,那么此时线程就是新生状态,此状态下线程已经分配完毕内存空间。 RUNNABLE:当调用Thread.start()方法后,线程进入就绪状态,此时线程并不会马上开始...

阿拉德大陆的魔法师
2016/11/22
45
0
taobao-pamirs-schedule-2.0源码分析——任务处理器源码分析

TBScheduleProcessorSleep分析 基本介绍 sleep模式: 当某一个线程任务处理完毕,从任务池中取不到任务的时候,检查其它线程是否处于活动状态。如果是,则自己休眠;如果其它线程都已经因为没...

杨武兵
2016/03/11
221
2
Java并发编程(2):线程中断

使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里...

余平的余_余平的平
2017/09/28
0
0
lock和wait+signal

lock和wait+signal 在编程中,我们经常使用多线程来提升性能,所以这就涉及到互斥和同步的问题了。而在编程中,我们一般都是通过如下方式来完成多线程的互斥和同步: lock | unlock signal + ...

精通吹水
2016/04/15
212
0
线程的基本知识

【线程的概念】 Thread--->线程类 一:程序,进程,线程的基本区别 进程:作为资源的分配单位。 线程:调度和执行的单位。 (1)程序:指令集。【静态的】 (2)进程:操作系统cpu调度程序。...

无信不立
2015/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20181213 上课截图

小丑鱼00
8分钟前
0
0
nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题

https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages For reference, I am attaching my location block for catching files with the .php extension: location ~......

Yao--靠自己
15分钟前
1
0
mac 没声音

somehow不时就会出现这种情况。之前都得重启。 其实可以直接在terminal里打以下命令: sudo kextunload /System/Library/Extensions/AppleHDA.kext sudo kextload /System/Library/Extension...

dubox
31分钟前
1
0
看完让你彻底搞懂Websocket原理

作者:Ovear 链接:https://www.zhihu.com/question/20215561/answer/40316953 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 额。。最高票答案没答到点...

时刻在奔跑
46分钟前
2
0
Spring Cloud Stream消费失败后的处理策略(一):自动重试

之前写了几篇关于Spring Cloud Stream使用中的常见问题,比如: 如何处理消息重复消费 如何消费自己生产的消息 下面几天就集中来详细聊聊,当消息消费失败之后该如何处理的几种方式。不过不论...

程序猿DD
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部