All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.codeboy.common.base.task.CBTask Maven / Gradle / Ivy

package me.codeboy.common.base.task;


import me.codeboy.common.base.task.impl.ICBTask;
import me.codeboy.common.base.task.listener.CBTaskListener;

/**
 * 任务
 * Created by YD on 1/18/16.
 */
abstract public class CBTask extends Thread implements ICBTask {
    private volatile boolean stopSign = false;
    private volatile boolean finished = false;
    private CBTaskListener listener;


    @Override
    public void startTask() {
        if (listener != null) {
            listener.onTaskStart();
        }
        this.start();
    }

    @Override
    public void stopTask() {
        stopSign = true;
        interrupt();
    }

    @Override
    public boolean isTaskFinished() {
        return finished;
    }

    @Override
    public void setTaskListener(CBTaskListener listener) {
        this.listener = listener;
    }

    @Override
    public void run() {
        task(stopSign);
        finished = true;
        if (listener != null) {
            listener.onTaskEnd();
        }
    }

    /**
     * 任务
     *
     * @param stopSign 结束标识符,任务执行流程应依赖于该标识,如果为true,代表任务需要被结束
     */
    public abstract void task(boolean stopSign);

    @Override
    public void waitForEnd() throws InterruptedException {
        if(!finished) {
            this.join();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy