在 Java 中设置计时器
这个问题最初的重点是设置一个计时器来尝试数据库连接,并在出现任何连接问题时抛出异常出现。澄清的问题进一步要求计时器在指定的时间段内执行任务,如果任务超过该时间,则抛出异常。
设置计时器
要设置计时器,请创建一个 java.util.Timer 对象:
Timer timer = new Timer();
要执行一次任务,请使用Timer.schedule():
timer.schedule(new TimerTask() { @Override public void run() { // Database code here } }, 2*60*1000); // 2 minutes in milliseconds
要按照指定的时间间隔重复执行任务,请使用 Timer.scheduleAtFixedRate():
timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { // Database code here } }, 2*60*1000, 2*60*1000);
超时机制
要设置任务超时,请使用ExecutorService:
ExecutorService service = Executors.newSingleThreadExecutor(); try { Runnable r = new Runnable() { @Override public void run() { // Database task } }; Future<?> f = service.submit(r); f.get(2, TimeUnit.MINUTES); // attempt the task for 2 minutes } catch (InterruptedException e) { // Thread interrupted during sleep, wait, or join } catch (TimeoutException e) { // Took too long! } catch (ExecutionException e) { // Exception within the Runnable task } finally { service.shutdown(); }
如果任务在 2 分钟内完成,此代码将正常执行。否则,将会抛出 TimeoutException,线程将继续运行,直到遇到数据库或网络连接异常。
以上是如何使用Timers和ExecutorService在Java中实现任务的超时机制?的详细内容。更多信息请关注PHP中文网其他相关文章!