package com.github.zhangkaitao.spring.service; import junit.framework.Assert; import org.junit.Test; import org.springframework.util.concurrent.*; import java.util.concurrent.Callable; /** * User: zhangkaitao * Date: 14-8-1 * Time: ����8:40 * Version: 1.0 */ public class ListenableFutureTest { @Test public void test() throws Exception { SuccessCallback<String> successCallback = new SuccessCallback<String>() { @Override public void onSuccess(String str) { System.out.println("�첽�ص��ɹ���, return : " + str); } }; FailureCallback failureCallback = new FailureCallback() { @Override public void onFailure(Throwable throwable) { System.out.println("�첽�ص�ʧ����, exception message : " + throwable.getMessage()); } }; ListenableFutureTask<String> future = new ListenableFutureTask(new Callable() { @Override public String call() throws Exception { return "123"; } }); future.addCallback(successCallback, failureCallback); future.run(); Assert.assertEquals("123", future.get()); System.out.println("========================="); ListenableFutureCallback<String> listenableFutureCallback = new ListenableFutureCallback<String>() { @Override public void onFailure(Throwable throwable) { System.out.println("�첽�ص�ʧ����, exception message : " + throwable.getMessage()); } @Override public void onSuccess(String str) { System.out.println("�첽�ص��ɹ���, return : " + str); } }; ListenableFutureTask<String> future2 = new ListenableFutureTask(new Callable() { @Override public String call() throws Exception { throw new RuntimeException("������"); } }); future2.addCallback(listenableFutureCallback); future2.run(); } }