zoukankan      html  css  js  c++  java
  • java 延时的几种方法方法

    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!),
    *///:~
  • 相关阅读:
    32 最小子串覆盖
    31 数组划分
    29 交叉字符串
    动态规划
    18 带重复元素的子集
    17 子集
    16 带重复元素的排列
    23.二叉树的后续遍历序列
    J.U.C-其他组件
    21.Longest Palindromic Substring(最长回文子串)
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10494414.html
Copyright © 2011-2022 走看看