java 1.7控制代码超时时间

来源:互联网 发布:人工智能需要什么专业 编辑:程序博客网 时间:2024/06/09 16:49

    防止重复提交有多种方法,有一种方法是操作数据之前先向一个临时表(有主键约束)中插入一条数据,这条数据可以是单据的主键id。当后续用户重复提交时,由于主键冲突就会报错,然后系统提示重复提交。但现在出现了一个问题,如果首次提交的事务迟迟不不能提交(或许是功能慢),后面重复提交的事务就会产生锁。如何避免后面的锁呢?就需要在代码里面写上控制超时的时间:

import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;import java.util.concurrent.TimeoutException;public class ThreadTimeoutTest {    public static void main(String[] args) throws InterruptedException,            ExecutionException {        ExecutorService threadPool = Executors.newFixedThreadPool(1);        Callable<String> call = new Callable<String>() {            public String call() throws Exception {                //开始执行耗时操作                Thread.sleep(1000 * 5);                return "线程执行完成.";            }        };        try {            Future<String> future = threadPool.submit(call);            String result = future.get(2000 * 1, TimeUnit.MILLISECONDS); //任务处理超时时间设为 2 秒            System.out.println("任务成功返回:" + result);        } catch (TimeoutException ex) {            System.out.println("处理超时啦....");            ex.printStackTrace();        } catch (Exception e) {            System.out.println("处理失败.");            e.printStackTrace();        }        // 关闭线程池        threadPool.shutdown();    }}

0 0