编写一个限制时间的程序,超时则返回结果,

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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');

猜你喜欢

转载自blog.csdn.net/m0_37601917/article/details/89025980