文档章节

并发编程实战 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

没有更多内容

加载失败,请刷新页面

加载更多

Cointext在阿根廷和土耳其推出比特币现金短信钱包

Cointext于10月15日开始在土耳其和阿根廷提供新的基于SMS的比特币现金钱包服务,这两个国家的加密货币使用量急剧上升,以应对严峻的经济形势。 移动钱包 通过短信处理BCH交易 “比特币是更好...

lpy411
5分钟前
0
0
大数据早课-0918

9.18日早课 1.全局搜索含有abc的文件名称或文件夹的命令 2.当前目录一般用什么表示 3.切换到上一次和上一层命令分别是什么 4.pwd是查看当前目录的什么 5.隐藏文件或文件夹的标识是什么? 怎样...

hnairdb
5分钟前
0
0
mybatis学习笔记一

一、mybaits需要的项目依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artif......

wuyiyi
7分钟前
0
0
CentOS6 安装 GraphicsMagick

1.安装相关依赖: yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel 2.下载并解压到目录/usr/local/ wget ft......

凯文加内特
8分钟前
0
0
RabbitMq集群使用Nginx做负载均衡

1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持 修改Nginx配置文件ngi...

zhaochaochao
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部