6.1 Objek boleh laksana

Jadi kami sampai ke bahagian terbesar pakej. Ia akan menerangkan antara muka untuk menjalankan tugas tak segerak dengan keupayaan untuk mendapatkan hasil melalui antara muka Masa Depan dan Boleh Panggil, serta perkhidmatan dan kilang untuk mencipta kumpulan benang: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool.

Untuk pemahaman yang lebih baik, mari kita lakukan sedikit penguraian antara muka dan kelas.

6.2 Realisasi objek boleh laku

Future<V>ialah antara muka yang menarik untuk mendapatkan hasil operasi tak segerak. Kaedah utama di sini ialah kaedah dapatkan, yang menyekat utas semasa (dengan atau tanpa tamat masa) sehingga operasi tak segerak pada utas lain telah selesai. Terdapat juga kaedah tambahan untuk membatalkan operasi dan menyemak status semasa. Kelas FutureTask sering digunakan sebagai pelaksanaan.

RunnableFuture<V>- jika Masa Depan ialah antara muka untuk API Pelanggan, maka antara muka RunnableFuture sudah digunakan untuk memulakan bahagian tak segerak. Penyiapan kaedah run() dengan jayanya menamatkan operasi tak segerak dan membolehkan keputusan diambil melalui kaedah get.

Callable<V>- Analog lanjutan antara muka Runnable untuk operasi tak segerak. Membolehkan anda mengembalikan nilai yang ditaip dan membuang pengecualian yang ditandai. Walaupun antara muka ini tidak mempunyai kaedah run(), banyak kelas java.util.concurrent menyokongnya bersama-sama dengan Runnable.

FutureTask<V>— pelaksanaan antara muka Masa Depan/RunnableFuture. Operasi tak segerak diambil sebagai input kepada salah satu pembina dalam bentuk objek Runnable atau Callable. Kelas FutureTask sendiri direka bentuk untuk dilancarkan dalam urutan pekerja, contohnya, melalui Thread(tugas) baharu () atau melalui ThreadPoolExecutor. Keputusan operasi tak segerak diambil melalui kaedah get(...).

Delayed- digunakan untuk tugas tak segerak yang sepatutnya bermula pada masa hadapan, serta dalam DelayQueue. Membolehkan anda menetapkan masa sebelum permulaan operasi tak segerak.

ScheduledFuture<V>- antara muka penanda yang menggabungkan antara muka Masa Depan dan Tertunda.

RunnableScheduledFuture<V>- antara muka yang menggabungkan RunnableFuture dan ScheduledFuture. Selain itu, anda boleh menentukan sama ada tugas itu adalah tugasan sekali sahaja atau harus dijalankan pada kekerapan yang ditetapkan.