Rumah  >  Artikel  >  Java  >  Cara menggunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas dalam Java 7

Cara menggunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas dalam Java 7

WBOY
WBOYasal
2023-07-29 13:53:151965semak imbas

Cara menggunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas dalam Java 7

Pengenalan:
Dalam pengaturcaraan serentak, pengurusan tamat masa tugas ialah fungsi penting. Apabila kita mahu tugasan diselesaikan dalam tempoh masa tertentu, jika tidak, pelaksanaan tugas akan terganggu dan nilai lalai akan dikembalikan, kita boleh menggunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas. Artikel ini akan memperkenalkan cara menggunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas dalam Java 7 dan memberikan contoh kod yang sepadan.

1. Menggunakan thread pool
Sebelum kita mulakan, mari kita perkenalkan secara ringkas konsep thread pool. Kumpulan utas ialah mekanisme untuk mengurus utas Ia mencipta bilangan utas tertentu terlebih dahulu dan memberikan tugas kepada utas ini untuk dilaksanakan. Dengan menggunakan semula benang, anda boleh mengelakkan overhed yang disebabkan oleh kerap mencipta dan memusnahkan benang, dan meningkatkan prestasi dan kecekapan program.

Di Java, anda boleh menggunakan kumpulan benang di bawah pakej java.util.concurrent untuk melaksanakan pengurusan pelaksanaan tugas. Pelaksanaan khusus boleh diselesaikan melalui kelas ThreadPoolExecutor. Seterusnya, kami akan menggunakan kumpulan benang untuk melaksanakan tugas kami dan melaksanakan pengurusan tamat masa pelaksanaan tugas.

2. Gunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas
Di Java, pengurusan tamat masa pelaksanaan tugas boleh dicapai melalui antara muka Masa Depan dan kaedah ExecutorService.submit().

  1. Buat kumpulan benang
    Pertama, kita perlu mencipta kumpulan benang. Contoh kod adalah seperti berikut:
ExecutorService executor = Executors.newSingleThreadExecutor();

Kod di atas mencipta kumpulan benang dengan satu utas. Jika anda memerlukan lebih banyak utas, anda boleh menggunakan kaedah Executors.newFixedThreadPool(int n) untuk menciptanya.

  1. Serahkan tugas dan dapatkan objek Masa Depan
    Seterusnya, kita perlu menggunakan kaedah submit() untuk menyerahkan tugas dan mendapatkan objek Masa Depan. Objek Masa Depan mewakili hasil pengiraan tak segerak, dan ia menyediakan kaedah untuk menyemak sama ada pengiraan selesai, menunggu pengiraan selesai dan mendapatkan hasil pengiraan. Contoh kod adalah seperti berikut:
Future<String> future = executor.submit(new Callable<String>() {
    public String call() throws Exception {
        // 执行耗时任务
        return "Task completed";
    }
});

Kod di atas menyerahkan tugas Boleh Panggil dan mengembalikan objek Masa Depan.

  1. Tetapkan tamat masa pelaksanaan tugas
    Seterusnya, kita boleh menggunakan kaedah get() objek Masa Depan untuk mendapatkan hasil pelaksanaan tugas. Sebelum menggunakannya dengan kaedah get(), kita perlu memanggil kaedah get(masa tamat masa, unit TimeUnit) objek Masa Depan untuk menetapkan tamat masa tugas. Contoh kod adalah seperti berikut:
try {
    String result = future.get(3, TimeUnit.SECONDS);
    System.out.println(result);
} catch (TimeoutException e) {
    // 超时处理
    future.cancel(true);
    System.out.println("Task timeout");
}

Kod di atas menetapkan tamat masa tugas kepada 3 saat. Jika tugas gagal diselesaikan dalam masa yang ditetapkan, TimeoutException akan dilemparkan. Selepas menangkap pengecualian, kita boleh memanggil kaedah cancel() objek Masa Depan untuk membatalkan pelaksanaan tugas.

  1. Tutup kumpulan benang
    Akhir sekali, selepas pelaksanaan tugas selesai, kita perlu menutup kumpulan benang secara manual untuk melepaskan sumber. Anda boleh menggunakan kaedah shutdown() objek ExecutorService untuk menutup kumpulan benang. Contoh kod adalah seperti berikut:
executor.shutdown();

Kod di atas akan menutup kumpulan benang dan menunggu semua tugasan dilaksanakan sebelum kembali.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan kumpulan benang dalam Java 7 untuk melaksanakan pengurusan tamat masa pelaksanaan tugas. Dengan menggunakan kumpulan benang dan objek Masa Depan, anda boleh melaksanakan pengurusan tamat masa pelaksanaan tugas dan menetapkan tamat masa tugas secara fleksibel. Saya harap kandungan artikel ini dapat membantu anda.

Atas ialah kandungan terperinci Cara menggunakan kumpulan benang untuk melaksanakan pengurusan tamat masa pelaksanaan tugas dalam Java 7. 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