java笔记--线程休眠sleep()的运用
线程休眠sleep()方法的运用
在多线程编程中,有时需要让某个线程优先执行。除了可以设置这个线程的优先级为最高外,
更加理想的方法是休眠其他线程,若有线程中断了正在休眠的线程,则抛出InterruptedException.
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3894793.html "谢谢--
sleep()方法是Thread类的一个静态方法,主要实现有:
sleep(long millis) : 让线程休眠指定的毫秒数
sleep(long millis,int nanos) : 让线程休眠指定的毫秒数加纳秒数
代码实例:
package com.xhj.thread;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 用龟兔赛跑来描述sleep()的作用
*
* @author XIEHEJUN
*
*/
public class SleepThread implements Runnable {
/**
* 执行兔子赛跑线程
*/
@Override
public void run() {
for (int i = 1; i < 11; i++) {
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
// 格式化当前日期
SimpleDateFormat sdf = new SimpleDateFormat("k:m:s");
String result = sdf.format(new Date());
System.out.println("系统时间:" + result + "\t兔子跑了" + i * 10 + "米");
if (i == 9) {
System.out.println("没见到乌龟的身影,兔子偷笑的找个地方睡觉去了……");
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}
}
if (i == 10) {
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("兔子到达终点");
}
}
}
/**
* 执行乌龟赛跑线程
*
* @return
*/
public Thread turtle() {
class Turtle implements Runnable {
@Override
public void run() {
for (int i = 1; i < 21; i++) {
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
// 格式化当前日期
SimpleDateFormat sdf = new SimpleDateFormat("k:m:s");
String result = sdf.format(new Date());
System.out.println("系统时间:" + result + "\t乌龟跑了" + i * 5+ "米");
if (i == 20) {
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("乌龟到达终点");
}
}
}
}
Thread thread = new Thread(new Turtle());
return thread;
}
public static void main(String[] args) {
SleepThread sleep = new SleepThread();
Thread rabthread = new Thread(sleep);
Thread turThread = new Thread(sleep.turtle());
System.out.println("比赛开始:");
rabthread.start();
turThread.start();
}
}
java笔记--线程休眠sleep()的运用的更多相关文章
- Java笔记 - 线程与并行API
一.线程简介 1.线程与进程 每个进程都具有独立的代码和数据空间,进程间的切换会有较大的开销.线程是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开 ...
- 关于java中线程休眠的另一种写法
编辑器加载中... 优先使用TimeUnit类中的sleep() TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的 ...
- java笔记线程电影院卖票最终版
* 如何解决线程安全问题呢? * * 要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准) * A:是否是多线程环境 * B:是否有共享数据 ...
- java笔记----线程状态转换函数
注意:stop().suspend()和 resume()方法现在已经不提倡使用,这些方法在虚拟机中可能引起“死锁”现象.suspend()和 resume()方法的替代方法是 wait()和 sle ...
- java笔记--线程的插队行为
对线程的插队行为的理解 在编写多线程时,会遇到让一个线程优先于其他线程运行的情况, 此时除了可以设置其优先级高于其他线程外,更直接的方式是使用Thread类的join()方法 --如果朋友您想转载本文 ...
- java笔记线程电影院卖票改进版
通过加入延迟后,就产生了连个问题: * A:相同的票卖了多次 * CPU的一次操作必须是原子性的 * B:出现了负数票 * 随机性和延迟导致的 public class SellTicketD ...
- java笔记线程两种方式模拟电影院卖票
public class SellTicketDemo { public static void main(String[] args) { // 创建三个线程对象 SellTicket st1 = ...
- java笔记线程方式1线程暂停yield
public static void yield():暂停当前正在执行的线程对象,并执行其他线程. 让多个线程的执行更和谐,但是不能靠它保证一人一次. public class ThreadYield ...
- java笔记线程方式1线程终端与停止
public final void stop():让线程停止,过时了,但是还可以使用.public void interrupt():中断线程. 把线程的状态终止,并抛出一个InterruptedEx ...
随机推荐
- 【字符串】Reverse Words in a String(两个栈)
题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is b ...
- IntelliJ IDEA的黑白色背景切换(Ultimate和Community版本皆通用)
不多说,直接上干货! IntelliJ IDEA的黑白色背景切换 File -> Setting -> Editor -> Colors & F ...
- Struts 2初体验
Struts2简介: Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数 ...
- Linux C 遍历指定目录
#include<stdio.h> //标准输入输出 #include<unistd.h> //各种系统调用 #include<dirent.h> //与目录有关的 ...
- Java代码实现单例模式
public class Single { /*private static final Single single=new Single(); private Single(){} public s ...
- Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
- SpringMVC源码阅读:Controller中参数解析
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...
- grafana安装
1 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm2 sudo ...
- UIKit 框架之UIAlertController
IOS8之后增加了UIAlertController类,它可以表示UIAlertView和UIActionSheet.它继承自UIViewController. - (BOOL)application ...
- SpringBoot自动化配置的注解开关原理
我们以一个最简单的例子来完成这个需求:定义一个注解EnableContentService,使用了这个注解的程序会自动注入ContentService这个bean. @Retention(Retent ...