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 ...
随机推荐
- 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...
- Jmeter环境搭建
一.工具描述 Apache JMeter是 100 %的 java 桌面应用程序.它可以被用来测试包括基于静态和动态资源程序的性能,例如静态文件, Java Servlets , Java 对象,数 ...
- Centos调整时间时区
一台VPS的时间出错,使用常规手段修改均失败.提示hwclock failed : ntpdate stdtime.sinica.edu.tw 如果你的 VPS 提示没有 ntpdate 这个命令,可 ...
- golang-利用反射给结构体赋值
由于想给一个结构体的部分成员赋值,但是有不知道具体名字,故将tag的json名字作为索引,按照json名字来一一赋值 1.通过tag反射//将结构体里的成员按照json名字来赋值 func SetSt ...
- Major GC和Full GC的区别是什么?触发条件呢?
作者:RednaxelaFX链接:http://www.zhihu.com/question/41922036/answer/93079526来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...
- Java简单的RPC实现(一)
RPC使用java最基本的,传输层使用Socket,序列化使用Serializable,java 动态代理模式,但是未实现消息注册等相关信息 大道至简 server端 package com.rpc. ...
- rails安全性
如果你发布你的blog.那么其他人就可以随便修改和添加博客了. Rails提供了一个非常简单的http认证系统,可以非常有帮助的解决这种情况. 在PostsController里面我们需要一个方法阻止 ...
- Struts2 Web Project 实现中文、英语的切换
1.struts.xml文件部分配置: <package name="default" namespace="/login" extends=" ...
- 破解栅栏密码python脚本
今天遇到一个要破解的栅栏密码,写了个通用的脚本 #!/usr/bin/env python # -*- coding: gbk -*- # -*- coding: utf_8 -*- # Author ...
- (在数据库中调用webservices。)SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问
--开启 Ole Automation Procedures sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_config ...