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
Lepaskan: 2024-12-25 12:39:09
asal
747 orang telah melayarinya

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();
Salin selepas log masuk

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
Salin selepas log masuk

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);
Salin selepas log masuk

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();
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan