| New file | 
 |  |  | 
 |  |  | package com.dy.common.util; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | @SuppressWarnings("unused") | 
 |  |  | @Deprecated | 
 |  |  | public abstract class ThreadJob { | 
 |  |  |     protected Thread thread ; | 
 |  |  |     protected boolean stop = false ; | 
 |  |  |     public void stop(){ | 
 |  |  |         this.stop = true ; | 
 |  |  |     } | 
 |  |  |     public boolean isStop(){ | 
 |  |  |         return this.stop ; | 
 |  |  |     } | 
 |  |  |     public Thread getThread(){ | 
 |  |  |         return this.thread ; | 
 |  |  |     } | 
 |  |  |     public void start(Callback callback) throws Exception { | 
 |  |  |         this.thread = new Thread(() -> { | 
 |  |  |             Exception[] exe = {null} ; | 
 |  |  |             Object[] obj = {null} ; | 
 |  |  |             try { | 
 |  |  |                 obj[0] = execute() ; | 
 |  |  |             }catch(Exception e){ | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |                 exe[0] = e ; | 
 |  |  |             }finally { | 
 |  |  |                 if(callback != null){ | 
 |  |  |                     if(exe[0] != null){ | 
 |  |  |                         callback.exception(exe[0]); | 
 |  |  |                     }else{ | 
 |  |  |                         callback.call(obj[0]); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         thread.start() ; | 
 |  |  |     } | 
 |  |  |     public abstract Object execute() throws Exception ; | 
 |  |  | } | 
 |  |  |  |