Java 延时常见的几种方法

 

1、 用Thread就不会iu无法终止

new Thread(new Runnable() {
public void run() {
while (true) {
test();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void test() {
// TODO Auto-generated method stub
}
public Runnable start() {
// TODO Auto-generated method stub
return null;
}
}.start());

2、 或者用现成的

javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener() {   public void actionPerformed(ActionEvent e) {     repaint();   } };

timer.start();

3、下面这个方法测试过可以用 java非线程延时

import java.awt.Robot;
import java.util.Date; public class test {
public static void main(String[] args) throws Exception{
Robot r = new Robot();
System.out.println( "延时前:"+new Date().toString() );
r.delay( 2000 );
System.out.println( "延时后:"+new Date().toString() );
}
}

4、 用这下面的TimeTask类(指定延时)

java里面的sleep()并不能精确定时,TimeTask可以:例下面的小程序:

import java.util.*;

public class test {
public static void main(String[] args) {
Timer timer = new Timer();// 实例化Timer类
timer.schedule(new TimerTask() {
public void run() {
System.out.println("退出");
this.cancel();
}
}, 5000);// 这里百毫秒
System.out.println("本程序存在5秒后自动退出");
}
}

5.用concurrent包的TimeUnit类延时sleep()方法延时

package concurrency;
//: concurrency/SleepingTask.java
// Calling sleep() to pause for a while.
import java.util.concurrent.*; public class SleepingTask extends LiftOff {
public void run() {
try {
while(countDown-- > 0) {
System.out.print(status());
// Old-style:
// Thread.sleep(100);
// Java SE5/6-style:
TimeUnit.MILLISECONDS.sleep(100);//MILLISECONDS表示以毫秒为单位延时
}
} catch(InterruptedException e) {
System.err.println("Interrupted");
}
}
public static void main(String[] args) {
ExecutorService exec = Executors.newCachedThreadPool();
for(int i = 0; i < 5; i++)
exec.execute(new SleepingTask());
exec.shutdown();
}
} /* Output:
#0(9), #1(9), #2(9), #3(9), #4(9), #0(8), #1(8), #2(8), #3(8), #4(8), #0(7), #1(7), #2(7), #3(7), #4(7), #0(6), #1(6), #2(6), #3(6), #4(6), #0(5), #1(5), #2(5), #3(5), #4(5), #0(4), #1(4), #2(4), #3(4), #4(4), #0(3), #1(3), #2(3), #3(3), #4(3), #0(2), #1(2), #2(2), #3(2), #4(2), #0(1), #1(1), #2(1), #3(1), #4(1), #0(Liftoff!), #1(Liftoff!), #2(Liftoff!), #3(Liftoff!), #4(Liftoff!),
*///:~

java 延时的几种方法方法的更多相关文章

  1. java oracle的2种分页方法

    java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --> <select id="findBlogs" resultType= ...

  2. java 中的几种 "通用方法“

    前言 Java中,除了基本的数值类型,其他所有数据类型(包括数组)都是对象. 而Object这个类是所有类的超类,它提供的方法,自然能够使用于它的所有子类(所有非基本数值类型). 本文介绍了Objec ...

  3. java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

    多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 先看一下java线程运行时各个阶段的运行状态 j ...

  4. Java List /ArrayList 三种遍历方法

    java list三种遍历方法性能比较http://www.cnblogs.com/riskyer/p/3320357.html JAVA LIST 遍历http://blog.csdn.net/lo ...

  5. Java反射的两种使用方法

    1.创建User.java package com.tao.test; public class User { private String name; private int id; public ...

  6. 2017.10.25 Java List /ArrayList 三种遍历方法

    java list三种遍历方法性能比较 学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入记录,然后遍历ArrayList,测试代码如下: pac ...

  7. java多线程有几种实现方法,都是什么?

    转自:http://www.cnblogs.com/liujichang/p/3150387.html 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方法有两种, ...

  8. JAVA文件的两种读取方法和三种写入方法

    在使用java对文件进行读写操作时,有多种方法可以使用,但不同的方法有不同的性能. 此文对常用的读写方法进行了整理,以备不时之需. 1.文件的读取 主要介绍两种常用的读取方法.按行读取和按字符块读取. ...

  9. Java 动态代理 两种实现方法

    AOP的拦截功能是由java中的动态代理来实现的.说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执 ...

随机推荐

  1. xkcd 单线程下载图片

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  2. python自动化运维之路~DAY6

    python自动化运维之路~DAY6 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  如果你想开发一款游戏,会存在角色的混搭的情况,这个时候“面向对象过程”就出现了,他能轻松的解决 ...

  3. Dapper总结(二)---事务和存储过程

    一  dapper使用事务 string sql1 = "insert into UserInfo values('user8',27,'s')"; string sql2 = & ...

  4. Git与GitHub学习笔记(四)合并远程分支

    在这里的前提: 1.你已经fork 源作者的项目到你自己的仓库了 2.git clone 自己仓库fork的项目,注意地址,这里是自己的账号下的地址,而不是源作者的项目地址哦 3.在本地修改代码,gi ...

  5. Newtonsoft.Json 两个Attribute含义

    1.[JsonIgnore] 看名字就知道了,通过这个Attribute可以忽略序列化某个实体类字段 2.[JsonProperty("Font")] 设置序列化到json中的实际 ...

  6. C#自绘蒙版控件,带延时隐藏显示,拷贝底图功能

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  7. MAC洪水攻击

    MAC洪水攻击原理 传统的交换机在数据转发过程中依靠对CAM表的查询来确定正确的转发接口,一旦在查询过程中无法找到相关的目的MAC对应的条目,此数据帧将作为广播帧来处理,CAM表的容量有限,只能存储不 ...

  8. luogu 1052 过河

    神仙的博客,先copy了日后绝对删掉的,(因为我实在没耐心看懂啊..) 题解 step 1理解题意 在做这道题之前,一定要理解好题意,有一个需要特别注意注意的地方: 青蛙不是一定要跳到石头上[嗯... ...

  9. JavaScript之Array/数组小结

    MDN-Array的属性/方法:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Arr ...

  10. mysql 原理 ~ binlog

    一 简介:我们会持续对binlog进行分析,但是不深入代码二 版本 5.6    格式    GTID和传统格式    传统格式     一 binlog针对具体事务注意点-1         1 u ...