文档章节

并发编程实战 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
lock和wait+signal

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

精通吹水
2016/04/15
212
0
Java并发编程(2):线程中断

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

余平的余_余平的平
2017/09/28
0
0
等待多个并发事件的完成:CountDownLatch

java 并发API提供了CountDownLatch类,它是一个同步辅助类。在完成一组正在其它线程中执行的操作之 前,它允许线程一直等等。这个类使用一个整数进行初始化,这个整数就是线程要等等完成的操...

Canaan_
08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

最全最强解析:支付宝钱包系统架构内部剖析(架构图)

支付宝系统架构概况 典型处理默认 资金处理平台 财务会计 支付清算 核算中心 交易 柔性事务 支付宝的开源分布式消息中间件–Metamorphosis(MetaQ) Metamorphosis (MetaQ) 是一个高性能、高可...

晨猫
34分钟前
4
0
竞品分析

那什么样的场景需要用关键纬度分析法分析竞品呢? 竞品分析的目的是为了看竞品们和自己产品重合的业务都具备哪些功能点,以及这些功能是怎么做的,以此确定自己产品的优化方向。 竞品们的业务...

于谦老师
41分钟前
1
0
OSChina 周三乱弹 —— 公司女同事约我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享水木年华的单曲《蝴蝶花(2002年大提琴版)》 《蝴蝶花(2002年大提琴版)》- 水木年华 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
1K
16
Linux环境搭建 | VMware下共享文件夹的实现

在进行程序开发的过程中,我们经常要在主机与虚拟机之间传递文件,比如说,源代码位于虚拟机,而在主机下阅读或修改源代码,这里就需要使用到 「共享文件」 这个机制了。本文介绍了两种共享文...

良许Linux
今天
9
0
JUC锁框架——AQS源码分析

JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具。因为锁,才能实现正确的并发访问。而AbstractQueuedSynchronizer(AQS)是一个用来构建锁和同步器的框架,使用A...

长头发-dawn
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部