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 ...
 
随机推荐
- 【树】Construct Binary Tree from Preorder and Inorder Traversal
			
题目: Given preorder and inorder traversal of a tree, construct the binary tree. 思路: 线序序列的第一个元素就是树根,然后 ...
 - JavacProcessingEnvironment类解读
			
JavacProcessingEnvironment类的继承体系如下: 其中含有很多内部类,最重要的是迭代注解处理器相关的类,如下:
 - sqldeveloper的安装及其使用教程
			
1.安装 下载地址:http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index-098778.htm ...
 - mongodb  错误  SCRAM-SHA-1 authentication failed for --转
			
log 日志错误信息 2018-10-24T16:14:42.244+0800 I NETWORK [initandlisten] connection accepted from 192.168.1 ...
 - Linux下安装了Xampp,但命令行使用不了MySQL
			
引用:http://www.2cto.com/database/201406/309521.html 刚安装好Xampp,使用localhost也能正常运行, phpMyAdimin也能正常登录 ...
 - GDAL并行I/O
			
和导师在Transactions in GIS 上发表的关GDAL并行I/O方面的文章(SSCI, IF=0.906)http://onlinelibrary.wiley.com/doi/10.111 ...
 - 遇见CUBA CLI
			
原文:Meet CLI for CUBA Platform 翻译:CUBA China CUBA-Platform 官网 : https://www.cuba-platform.com CUBA Ch ...
 - rpm包的rpmbuild spec文件详解
			
http://machael.blog.51cto.com/829462/213477 上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包.最后部分还看到.src.rp ...
 - Red Hat Linux 无法使用yum命令
			
一:首先提供部分Red Hat 镜像下载地址 1.rhel-server-6.8-i386-dvd.iso 链接: https://pan.baidu.com/s/18VqxRgBMuAJE7Ty0H ...
 - 关于SVN提交注释的问题
			
如果客户端是TortoiseSVN的话,在客户端要设置的版本库上点右键,选择菜单TortoiseSVN--属性,新建属性,选择属性tsvn:logminsize,设置log的最短长度,然后提交.然后如 ...