爱玺玺

爱玺玺的生活日记本。wx:lb87626

java timer的schedule方法使用,时间格式的转换

 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer; 
import java.util.TimerTask; 


public class TimeTaskTest{
 public static void main(String[] args){
  SimpleDateFormat t1=new SimpleDateFormat("yyyy-mm-dd");//使用SimpeDateformat创建个时间格式对象
  SimpleDateFormat t2=new SimpleDateFormat("yyyy年mm月dd日");//模式字符串
  try {
   Date d = t1.parse("2017-8-8");//parse把字符串日期转换成date类型
   System.out.println(t2.format(d));//d可能出现异常,因此包含d这个表达式写在try里面,impleDateFormat类的对象t2使用format方法转换时间格式fromat英文单词就是格式的意思
  } catch (ParseException e) {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  }
  
  
  
     Calendar c=Calendar.getInstance();
    
     System.out.println(c.get(Calendar.YEAR)+"年"+c.get(c.MONTH)+"月"+c.get(c.DATE)+"日"+c.get(c.HOUR)+"时"+c.get(c.MINUTE)+"分"+c.get(c.SECOND)+"秒");
     c.add(c.DAY_OF_YEAR, 315);//c.ADY_OF_YEAR对象的属性
     System.out.println(c.get(Calendar.YEAR)+"年"+c.get(c.MONTH)+"月"+c.get(c.DATE)+"日"+c.get(c.HOUR)+"时"+c.get(c.MINUTE)+"分"+c.get(c.SECOND)+"秒");

     class MyTask extends TimerTask{//不随基类线程启动而启动,TimerTask时间任务是一个实现了runnale接口的类,用自己的MyTask继承这个类,写上自己的线程运行程序
      private Timer tm;
      public MyTask(Timer tm){
       this.tm=tm;
      }
      public void run(){
       try {
        Runtime.getRuntime().exec("calc.exe");
    } catch (Exception e) {
     // TODO: handle exception
    }
       tm.cancel();//cancel()结束线程,所以这个函数必须写在线程代码里面
      }

     }
    
     Timer tm=new Timer();//创建一个Timer类型的对象tm,tm是个timer类对象,具备cancel方法可以结束线程
     tm.schedule(new MyTask(tm),5000);//Schedule日程安排,执行了程序后需要结束,但是它不结束,所以需要单独弄过线程来执行。Timer对象tm的schedule日程安排程序来启动MyTsak,将tm对象作为参数传进去,主要就是为了能正常结束一个线程
    

 }
 
 
}

注意调用的包:

import java.util.Timer; 
import java.util.TimerTask;

和结束线程的cancel()方法要写在run里面。

 

发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5