+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import java.util.concurrent.Callable;
import com.icss.ebu.ami.portal.system.commons.utils.SysFileUtilsBySftp;
/**
* 检查FTP连接是否超时
* @author zcs
*
*/
public class CheckConnectFtpTimeoutTask implements Callable<Boolean>
{
@Override
public Boolean call() throws Exception
{
while(true)
{
//这里是业务代码,也就是你要访问的请求
boolean checkFtpIsOk = SysFileUtilsBySftp.checkFtpIsOk();
if(checkFtpIsOk)
{
return true;
}
else
{
return false;
}
}
}
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TimeoutTaskUtils
{
private static final Logger LOGGER = LoggerFactory.getLogger(TimeoutTaskUtils.class);
/**
* 执行一个有时间限制的任务
* @param task 待执行的任务
* @param seconds 超时时间(单位: 秒)
* @return Boolean
* zcs
* 2019/04/04
*/
public static Boolean execute(Callable<Boolean> task, int seconds)
{
Boolean result = Boolean.FALSE;
ExecutorService threadPool = Executors.newCachedThreadPool();
try
{
Future<Boolean> future = threadPool.submit(task);
result = future.get(seconds, TimeUnit.SECONDS);
}
catch (Exception e)
{
result = Boolean.FALSE;
LOGGER.error("execute task time out " + e);
}
finally
{
threadPool.shutdownNow();
}
return result;
}
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public static void main(String[] args)
{
//限制在6秒以内,如果超过6秒,则返回false,6秒内成功则返回结果
boolean result = TimeoutTaskUtils.execute(new CheckConnectFtpTimeoutTask(), 6);
System.out.println("result = " + result);
System.out.println("-- finished. --");
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
jsp页面
parent.$.messager.progress({msg:'',text:'<spring:message code="billing_zhengzaichuli" />'});
parent.$.messager.progress('close');