정지 스레드 제어 가능

1667 단어
Thread에 대한 도구 클래스 캡슐화로 무한 반복을 중지할 수 있는 스레드
  • 구조 시 Runnable continue Runnable continue Runnable로 전송하여 무한 순환에서 실행할 코드
  • setSleepTime(long sleepTime)sleepTime)sleepTimems마다 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;
        }
    }
    
    
    

    좋은 웹페이지 즐겨찾기