针对不同的场景,我们可能需要不同的回调,每一个回调操作是不同的
定义回调操作抽象类
1 | public abstract abstract class Operation<V> implements Callable<V> { |
我们定义一个 call
函数,内部调用 run
和 done
函数,这样我们可以针对不同的回调,我们可以继承此抽象类,实现不同 的 done
函数,来达到实现不同的回调操作,run
函数是调用者要实现的
实现一个自由控制的关闭回调
我们通过ignoreCloseExceptions
参数,来控制是否当 done
发生异常时,程序是忽略还是终止
1 | public abstract class CloseOperation<V> extends Operation<V> { |
实现一个流刷新操作,确保流正常刷新到底层
1 | public abstract class FlushOperation<V> extends Operation<V> { |
使用
1 | new CloseOperation<HttpRequest>(reader, ignoreCloseExceptions) { |