Cara Melaksanakan Interface yang Boleh Dipanggil di Java



Artikel ini akan memberi anda pengetahuan terperinci dan komprehensif tentang cara melaksanakan Interface yang Boleh Dipanggil di Java dengan contoh.

Program multithreading Java menyaksikan penggunaan yang luas Boleh dipanggil dan masa depan. Di bawah pengetahuan prasyarat tentang utas dan multi-utas, pembaca akan dapat memahami perbincangan dalam artikel ini dengan lebih baik. Seperti yang saya akan menerangkan Callable Interface di Java dalam artikel ini.

Rekap pada Threads

Namun, izinkan saya memberikan pengenalan ringkas mengenai konsep utas. Suatu utas adalah jalan pelaksanaan yang terpisah, sekiranya anda perlu melakukan tugas berulang, karya tersebut dapat dipecah menjadi beberapa tugas dan memberikannya pada utas. Berbilang benangtidak lain dan tidak bukan adalah memberikan beberapa utas untuk melaksanakan tugas yang berbeza secara selari untuk mendapatkan hasilnya dengan cepat.





Apa itu antara muka yang boleh dipanggil di Java

Untuk Java 5, kelas 'java.util.concurrent' diperkenalkan. Antaramuka yang boleh dipanggil ini dibawa melalui pakej serentak yang kelihatan serupa dengan antara muka Runnable. Ia juga dapat mengembalikan objek apa pun dan dapat membuang Pengecualian. Antaramuka Java Callable menggunakan Generics, sehingga memungkinkan untuk mengembalikan semua jenis objek. Kerangka Pelaksana memberikan kaedah kirim () untuk melaksanakan implementasi Callable dalam kumpulan utas. Pada hakikatnya, Java Executor Framework mematuhi corak WorkerThread.

java-interfaceDalam kumpulan utas pengguna dapat memulakan utas dengan menggunakan kaedah Executors.newFixedThreadPool (10) dan dengan itu menyerahkan tugas kepadanya. Runnable bertindak sebagai sasaran utas dan kaedah public void run () dilaksanakan secara mandatori untuk menentukan tugas. Ini akan dilaksanakan oleh utas di kumpulan utas. Berdasarkan ketersediaan utas di kolam, Kerangka Pelaksana memberikan kerja (sasaran yang dapat dijalankan) ke utas.Sekiranya semua utas digunakan, tugas itu harus dihentikan. Setelah utas menyelesaikan satu tugas maka ia kembali ke kumpulan sebagai utas yang tersedia, yang siap menerima tugas selanjutnya. Callable mirip dengan Runnable dan dapat mengembalikan semua jenis objek ketika kita ingin mendapatkan hasil atau status dari tugas tersebut.



jenis algoritma c ++

Pengembalian Antaramuka Boleh Dipanggil

Java Callable mengembalikan java.util.concurrent. Java Future menawarkan kaedah membatalkan () untuk menghilangkan tugas Callable yang berkaitan. Ini adalah versi kaedah get () yang terlalu banyak, di mana seseorang dapat menentukan masa tertentu untuk menunggu hasilnya. Adalah berguna untuk mengelakkan utas semasa, yang mungkin disekat untuk jangka masa yang lebih lama. Harap diingat bahawa kaedah get adalah kaedah segerak dan sehingga panggilan dapat menyelesaikan tugasnya dan mengembalikan nilai, ia harus menunggu panggilan.

Terdapat juga kaedah 'isDone ()' dan 'isCancelled ()' untuk mengambil status semasa tugas Callable yang berkaitan. Pertimbangkan contoh di mana jumlah semua nombor dari satu hingga 100 perlu dijumpai. Kami dapat mengulangi 1 hingga 100 secara berurutan dan akhirnya menambahkannya. Kemungkinan lain adalah dengan memecah belah dan menakluki. Dalam kaedah ini, kita dapat mengumpulkan nombor dengan cara yang masing-masing kumpulan mempunyai dua unsur. Akhirnya, kita dapat menetapkan kumpulan itu ke kumpulan utas. Oleh itu, setiap utas mengembalikan sejumlah sebahagian secara selari dan kemudian mengumpulkan sejumlah wang tersebut dan menambahkannya untuk mendapatkan jumlah keseluruhan.



Ciri-ciri Kelas Boleh Dipanggil dan Masa Depan

  • Kelas yang boleh dipanggil adalah antara muka jenis SAM dan oleh itu ia dapat dilaksanakan dalam ungkapan lambda.

  • Kelas yang boleh dipanggil hanya mempunyai satu kaedah 'call ()' yang menyimpan semua kod yang diperlukan untuk dilaksanakan secara tidak segerak.

    cara menyusun program java
  • Dalam persekitaran antara muka yang dapat dijalankan, tidak ada kemungkinan untuk mengembalikan hasil pengiraan atau pengecualian dilempar. Manakala dengan Callable mengembalikan nilai dan melontarkan pengecualian dicentang tersedia.

  • Kaedah Get () kelas Masa Depan dapat digunakan untuk mendapatkan hasil setelah pengiraan selesai. Pengguna juga dapat memeriksa sama ada pengiraan selesai atau tidak dengan menggunakan kaedah selesai ().

  • Membatalkan pengiraan dengan menggunakan kaedah future.cancel () juga merupakan kelebihan dalam beberapa aplikasi.

  • Get () dipanggil panggilan sekatan dan ia terus menyekat sehingga pengiraan selesai.

Perbandingan Kelas yang Boleh Dipanggil dan Boleh Dijalankan

Boleh dihubungi Boleh dijalankan
Ia adalah sebahagian daripada ' java.util.concurrent ' pakej sejak Java 1.5Ini adalah sebahagian daripada pakej java.lang sejak Java 1.0
Antara muka parameter, seperti CallableAntara muka tanpa parameter
Mampu membuang Pengecualian yang diperiksaIa tidak boleh membuang pengecualian yang diperiksa
Ini berisi satu metode, panggilan (), yang mengembalikan Jenis V, ini sama dengan parameter antara muka yang ditentukan 'Jenis'Di sini, ia mengandungi satu kaedah, yang disebut run (), yang mengembalikan kekosongan

Di bawah ini adalah contoh ringkas kelas panggilan Java yang dilaksanakan di mana kod mengembalikan nama utas tertentu, yang menjalankan tugas setelah satu saat. Di sini kami menggunakan rangka pengekstraksi untuk melaksanakan 100 tugas selari dengan Java Future hingga hasil tugas yang dikirimkan. Coretan pertama adalah output dan di bawah menunjukkan kod.

pakej com.journaldev.threads import java.util.ArrayList import java.util.Date import java.util.List import java.util.concurrent.Callport import java.util.concurrent.ExecutionException import java.util.concurrent.ExecutorService import java .util.concurrent.Executors mengimport java.util.concurrent.Future public class MyCallable mengimplementasikan Callable {@Override public String call () membuang Pengecualian {Thread.sleep (1000) // mengembalikan nama utas yang menjalankan tugas yang dipanggil ini. () .getName ()} public static void main (String args []) {// Dapatkan ExecutorService dari kelas utiliti Executors, ukuran kumpulan thread adalah 10 ExecutorService executor = Executors.newFixedThreadPool (10) // buat senarai untuk menahan Masa Depan objek yang berkaitan dengan Callable Listsenarai = ArrayList baru() // Buat contoh MyCallable Callable callable = MyCallable baru () untuk (int i = 0 i<100 i++){ //submit Callable tasks to be executed by thread pool Future future = executor.submit(callable) //add Future to the list, we can get return value using Future list.add(future) } for(Future fut : list){ try { //print the return value of Future, notice the output delay in console // because Future.get() waits for task to get completed System.out.println(new Date()+ '::'+fut.get()) } catch (InterruptedException | ExecutionException e) { e.printStackTrace() } } //shut down the executor service now executor.shutdown() } } 

Mematikan Perkhidmatan Pelaksana

Aspek penting dan penting yang dilewatkan oleh banyak pemaju adalah mematikan ExecutorService. ExecutorService sangat penting dan dibuat dengan elemen utas tambahan. Perlu diingat bahawa JVM berhenti hanya apabila semua utas bukan daemon dihentikan. Dengan hanya mematikan perkhidmatan pelaksana, menghalang JVM berhenti.

cara keluar program di java

Untuk memberitahu perkhidmatan pelaksana bahawa tidak perlu menjalankan utas, kami harus mematikan perkhidmatan tersebut.

Terdapat tiga cara untuk meminta penutupan:

  • batal tutup () - Ini Memulakan penutupan yang teratur di mana tugas yang diserahkan sebelumnya dilaksanakan, tetapi tidak ada tugas baru yang diterima.
  • Senarai tutup Sekarang () - Ia berusaha menghentikan semua tugas yang aktif, menghentikan pemprosesan tugas yang belum selesai, dan juga mengembalikan daftar tugas yang sedang menunggu pelaksanaan.
  • batal menungguTerminasi () - Ini terus terhalang sehingga semua tugas selesai dilaksanakan setelah permintaan penutupan, atau waktu tamat berlaku. Ia juga menyekat apabila utas semasa terganggu. Semua bergantung pada tugas mana yang lebih utama.

Dengan ini, kita sampai pada akhir Artikel yang Boleh Dipanggil di Java. Saya harap anda dapat memahami Antarmuka Masa Depan dan Callable di Java.

Lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dari blog 'Interface yang Dapat Dipanggil di Java' ini dan kami akan menghubungi anda secepat mungkin.