代码拉取完成,页面将自动刷新
package guava;
import com.google.common.util.concurrent.*;
import org.junit.Test;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
/**
* FutureCallback: 用于处理任务执行结果的接口
* 对ListenableFuture. addListener缺陷的弥补
* 文章地址:http://www.xx566.com/detail/159.html
* User: Realfighter
* Date: 2014/11/4
* Time: 20:42
*/
public class FutureCallbackTest {
@Test
public void testFutureCallback() {
// 创建一个线程缓冲池Service
ExecutorService executor = Executors.newCachedThreadPool();
//创建一个ListeningExecutorService实例
ListeningExecutorService executorService =
MoreExecutors.listeningDecorator(executor);
//提交一个可监听的线程
ListenableFuture<String> futureTask = executorService.submit
(new Callable<String>() {
@Override
public String call() throws Exception {
return "Task completed";
}
});
FutureCallbackImpl callback = new FutureCallbackImpl();
//线程结果处理回调函数
Futures.addCallback(futureTask, callback);
//如果callback中执行的是比较费时的操作,Guava建议使用以下方法。
// Futures.addCallback(futureTask,callback,executorService);
//处理后的线程执行结果:"Task completed successfully"
assertThat(callback.getCallbackResult(), is("Task completed successfully"));
}
class FutureCallbackImpl implements FutureCallback<String> {
private StringBuilder builder = new StringBuilder();
@Override
public void onSuccess(String result) {
builder.append(result).append(" successfully");
}
@Override
public void onFailure(Throwable t) {
builder.append(t.toString());
}
public String getCallbackResult() {
return builder.toString();
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。