>  기사  >  Java  >  자바 멀티스레딩--타이머 사용 Timer

자바 멀티스레딩--타이머 사용 Timer

高洛峰
高洛峰원래의
2016-12-16 13:56:071520검색

휴대폰에서는 쓰레기 청소 일정, 알람시계 등 더 많은 타이밍 기능을 볼 수 있습니다. 타이밍 기능은 주로 Java의 Timer 개체를 사용하며 내부적으로는 멀티스레딩 기술을 사용합니다.

Time 클래스는 지정된 시간이 시작될 때 작업을 실행하는 예정된 작업의 기능을 완료하는 역할을 주로 담당합니다.

Timer 클래스의 기능은 예정된 작업을 설정하는 것입니다. 작업 내용을 캡슐화하는 것은 TimerTask 클래스입니다. 이 클래스는 추상 클래스이며 상속에는 run 메서드의 구현이 필요합니다.

문서를 확인하면 Timer에 다음 생성자가 있음을 알 수 있습니다. 🎜>

자바 멀티스레딩--타이머 사용 Timer 타이머에는 다양한 방법이 있습니다:

자바 멀티스레딩--타이머 사용 Timer 아래에서는 타이머를 사용하여 "You"를 인쇄하는 간단한 기능을 완성합니다. 프로젝트를 3초 동안 실행한 후 콘솔에서 "켜져야 합니다.", 알람 시계의 기능을 시뮬레이션하려면:

실행 후 콘솔이 3초 후에 상당한 양의 텍스트를 인쇄하는 것을 발견했습니다. , 작업이 완료되었음에도 불구하고 프로세스가 삭제되지 않고 여전히 빨간색입니다.
package com.wang.reflect;

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

class MyTask extends TimerTask{

    @Override
    public void run() {
        System.out.println("您该起床了!!!!");
    }
}
public class TimerDemo {
    public static void main(String[] args) {
        //创建定时器对象
        Timer t=new Timer();
        //在3秒后执行MyTask类中的run方法
        t.schedule(new MyTask(), 3000);
        
    }
}

타이머를 만드는 것은 새 스레드를 시작하는 것과 같습니다. 데몬 스레드이므로 항상 실행됩니다.

Time 클래스에 있고 TimerTask 클래스에 cancel() 메서드가 있습니다.

TimerTask 클래스의 기능은 데몬 스레드에서 자신을 지우는 것입니다. 작업 대기열(Timer 개체는 여러 Timerask 작업을 실행할 수 있음)

Timer 클래스의 기능은 작업 대기열의 모든 작업을 지우는 것입니다.

아래의 예를 작성하여 정기적으로 모든 파일을 삭제하세요. 지정된 디스크의 디렉터리:

위 테스트 코드에서 내가 지정한 날짜 유형 시간이 현재 시간보다 빠르면 작업이 즉시 실행됩니다.
package com.wang.reflect;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


class MyTask extends TimerTask{
/**
 * 定时删除指定位置的文件,(这里以删除f盘下aa文件夹的所有文件为例)
 */
    @Override
    public void run() {
        File file=new File("f://aa");
        deleteFolder(file);
        
    }
    public void deleteFolder(File file){
        File[] files=file.listFiles();
        for(File f:files){
            if(f.isDirectory()){
                //使用递归
                deleteFolder(f);
            }else{
                f.delete();
            }
        }
        file.delete();
    }
    
}
public class TimerDemo {

    public static void main(String[] args) throws ParseException {
        //创建定时器对象
        Timer t=new Timer();
        String time="2016-04-04 11:26:40";
        Date d=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
        t.schedule(new MyTask(), d);
    }
}



더 많은 Java 멀티스레딩-타이머 사용법 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.