针对不同的场景,我们可能需要不同的回调,每一个回调操作是不同的
定义回调操作抽象类
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) { |