1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.dy.common.util;
 
 
@SuppressWarnings("unused")
public abstract class ThreadJob {
    public void start(Callback callback){
        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]);
                    }
                }
            }
        }).start();
    }
 
    public abstract Object execute() throws Exception ;
}