Menetapkan Pemasa dalam Java
Soalan ini pada mulanya memfokuskan pada menetapkan pemasa untuk mencuba sambungan pangkalan data dan membuang pengecualian jika ada masalah sambungan timbul. Soalan yang dijelaskan pergi lebih jauh dengan meminta pemasa untuk melaksanakan tugasan untuk tempoh masa tertentu, membuang pengecualian jika tugasan melebihi masa itu.
Menetapkan Pemasa
Untuk menetapkan pemasa, cipta objek java.util.Timer:
Timer timer = new Timer();
Untuk melaksanakan tugas sekali, jadualkannya menggunakan Timer.schedule():
timer.schedule(new TimerTask() { @Override public void run() { // Database code here } }, 2*60*1000); // 2 minutes in milliseconds
Untuk mengulangi tugas pada selang waktu yang ditentukan, gunakan Timer.scheduleAtFixedRate():
timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { // Database code here } }, 2*60*1000, 2*60*1000);
Mekanisme Tamat Masa
Untuk menetapkan tamat masa bagi tugasan, gunakan 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(); }
Kod ini akan dilaksanakan seperti biasa jika tugasan selesai dalam masa 2 minit. Jika tidak, TimeoutException akan dilemparkan dan utas akan terus berjalan sehingga ia menemui pengecualian dalam pangkalan data atau sambungan rangkaian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Mekanisme Tamat Masa untuk Tugas di Java menggunakan Pemasa dan Perkhidmatan Pelaksana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!