Rumah > Java > javaTutorial > teks badan

Bagaimana untuk melaksanakan antara muka Boleh Panggil untuk mencipta kelas benang dalam java

PHPz
Lepaskan: 2023-05-11 11:58:06
ke hadapan
1009 orang telah melayarinya

Laksanakan antara muka Boleh Panggil untuk mencipta kelas utas

Antaramuka Boleh Panggil telah disediakan sejak Java5 Antara muka ini ialah versi antara muka Boleh Panggil yang dipertingkatkan menyediakan kaedah panggilan() sebagai utas badan pelaksanaan. Kaedah panggilan() Terdapat nilai pulangan, dan kaedah panggilan() boleh diisytiharkan untuk membuang pengecualian.

  • boolean cancel(boolean may) Cuba untuk membatalkan tugas Boleh Panggil yang dikaitkan dengan Masa Depan ini.

  • V get() Mengembalikan nilai pulangan kaedah panggilan() dalam tugasan Panggilan. Memanggil kaedah ini akan menyebabkan utas tersekat dan anda mesti menunggu sehingga utas anak tamat sebelum mendapat nilai pulangan.

  • V get(long timeout,TimeUnit unit) Mengembalikan nilai pulangan kaedah panggilan() dalam tugasan Panggilan. Kaedah ini membenarkan program menyekat sehingga masa yang ditentukan oleh tamat masa dan unit Jika masa yang ditentukan berlalu, dan jika masih tiada nilai pulangan selepas masa yang ditentukan, pengecualian TimeoutException akan dilemparkan.

  • boolean isCancelled() Kembalikan benar jika tugas Boleh Panggil dibatalkan sebelum ia selesai seperti biasa.

  • boolean isDone() Kembalikan benar jika tugas Boleh Panggil telah selesai.

Langkah pelaksanaan boleh dijalankan:

  1. Buat kelas pelaksanaan antara muka Boleh Panggil dan laksanakan kaedah panggilan(). ) Kaedah berfungsi sebagai badan pelaksanaan benang, dan kaedah panggilan() mempunyai nilai pulangan.

  2. Gunakan kelas FutureTask untuk membalut objek Boleh Panggil.

  3. Gunakan objek FutureTask sebagai sasaran objek Thread untuk mencipta dan memulakan urutan baharu.

  4. Dayakan kaedah get() objek FutureTask untuk mendapatkan nilai pulangan urutan anak.

<code>public class CallableDemo implements Callable<Integer> {<br>    public static void main(String args[]) {<br>        FutureTask<Integer> futureTask = new FutureTask<Integer>(new CallableDemo());<br>        new Thread(futureTask).start();<br>        try {<br>            System.out.println("子线程返回值:" + futureTask.get());<br>        } catch (InterruptedException e) {<br>            e.printStackTrace();<br>        } catch (ExecutionException e) {<br>            e.printStackTrace();<br>        }<br>        if (futureTask.isDone()) {<br>            System.out.println("线程结束");<br>        }<br>    }<br><br>    @Override<br>    public Integer call() throws Exception {<br>        System.out.println("线程开始");<br>        int ss = 0;<br>        for (int i = 0; i < 20; i++) {<br>            ss += i;<br>        }<br>        return ss;<br>    }<br>}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan antara muka Boleh Panggil untuk mencipta kelas benang dalam java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan