美文网首页
可控制停止的线程

可控制停止的线程

作者: 真胖大海 | 来源:发表于2017-08-24 17:57 被阅读111次

工具类 对Thread的封装,实现 可以停止无限循环的线程

  • 构造时传入Runnable continueRunnable
    continueRunnable为在无限循环里要执行的代码

  • setSleepTime(long sleepTime) 每隔sleepTime毫秒执行一次continueRunnable

  • start() 启动线程

  • setStop() 停止无限循环,退出线程

此类设置成一旦关闭就不可以开启

使用(伪代码)

//每隔一秒打印一个1
  final CanStopLoopThread canStopLoopThread=new Thread(
    new Runable(){
        public void run(){
            print(1);
        }
    }
  );
  canStopLoopThread.setSleepTime(1000);
  canStopLoopThread.start();
  //canStopLoopThread.stop();需要停止时调用


/**
 * Created  on 2017/7/20.
 *
 * @author xyb
 */

public class CanStopLoopThread {
    private static final String TAG="CanStopLoopThread";
    private Thread thread;
    private volatile boolean stop = false;
    private long sleepTime=1000;

    public CanStopLoopThread(final Runnable continueRunnable) {
        thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    if (stop) {
                        return;
                    }
                    continueRunnable.run();
                    try {
                        Thread.sleep(sleepTime);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    public void start() {
        thread.start();
    }

    public void setStop() {
        this.stop = true;
    }

    public void setSleepTime(long sleepTime) {
        this.sleepTime = sleepTime;
    }
}


相关文章

  • 线程 7. 停止线程

    停止线程: 停止线程要注意的实现我们停止一个线程一般都会配合一个变量去控制。如果我们停止的是一个等待状态下的线程,...

  • 可控制停止的线程

    工具类 对Thread的封装,实现 可以停止无限循环的线程 构造时传入Runnable continueRunna...

  • RunLoop:在项目中的常见应用

    常见应用 控制线程生命周期(线程保活) 解决NSTimer在滑动时停止工作的问题 监控应用卡顿 性能优化 控制线程...

  • 多线程_2_停止和暂停

    线程停止 停止线程是在多线程开发时很重要的技术点,掌握线程停止技术可以对线程的停止进行有效的处理。 停止线程的方法...

  • 线程池的使用以及实现原理

    线程池优点 限流控制线程总数,根据硬件人为控制使性能达到最优 复用减少线程的频繁创建和销毁复用线程 效率因为线程可...

  • java并发之守护线程

    java中有两种线程,用户线程和守护线程用户线程:主线程停止时,用户线程不会停止守护线程:主线程停止时,守护线程也...

  • Java多线程核心技术笔记1

    线程停止 判断线程是否停止 测试当前线程是否停止,是指调用该方法的线程是否停止。如果当前状态为已停止,调用该方法返...

  • java笔记--多线程总结

    停止线程的方法: 1 stop方法。 2 run方法结束。 怎么控制线程的任务结束呢?任务中都会有循环结构,只要控...

  • Java16-8 线程停止及其他线程方法

    如何让线程停止?原理:让run方法结束线程任务通常都有循环,因为开启线程就是为了需要一些时间的代码只要控制住循环,...

  • 线程停止总结

    1 单线程停止 2 线程池停止

网友评论

      本文标题:可控制停止的线程

      本文链接:https://www.haomeiwen.com/subject/pqwedxtx.html