Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Melaksanakan Mekanisme Tamat Masa untuk Tugas di Java menggunakan Pemasa dan Perkhidmatan Pelaksana?

Bagaimanakah Saya Boleh Melaksanakan Mekanisme Tamat Masa untuk Tugas di Java menggunakan Pemasa dan Perkhidmatan Pelaksana?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 12:39:09764semak imbas

How Can I Implement a Timeout Mechanism for Tasks in Java using Timers and ExecutorService?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn