JavaRush /Blog Java /Random-MS /Coffee break #159. Kitaran hayat benang di Jawa. Antara M...

Coffee break #159. Kitaran hayat benang di Jawa. Antara Muka Fungsian dan Kaedah Lalai dalam Java 8

Diterbitkan dalam kumpulan

Kitaran Hayat Benang di Jawa

Sumber: Sederhana Artikel ini membincangkan keadaan kitaran hayat yang berbeza bagi benang di Jawa. Coffee break #159.  Kitaran hayat benang di Jawa.  Antara Muka Fungsian dan Kaedah Lalai dalam Java 8 - 1Kitaran hayat benang di Jawa terutamanya terdiri daripada peralihan ke pelbagai keadaan, bermula dengan kelahiran benang dan berakhir dengan penamatan benang. Benang sedia untuk dijalankan apabila ia dibuat dan dimulakan dengan memanggil kaedah start() pada kelas Benang . Apabila kaedah sleep() atau wait() kelas Thread dipanggil , benang menjadi tidak boleh digunakan. Untuk mengurus benang secara pemrograman, adalah penting untuk mengenal pasti keadaan benang. Mari kita fahami bagaimana kitaran hayat benang Java menentukan keadaannya. Inilah yang dinyatakan oleh dokumentasi Java tentang perkara ini: Benang ialah laluan pelaksanaan program yang boleh memasuki salah satu daripada lima keadaan semasa kitaran hayatnya:
  1. Baru
  2. Boleh dijalankan
  3. Berlari
  4. Disekat
  5. Mati
1. Baru (newborn state) berlaku apabila anda mencipta objek Thread dalam kelas Thread. Aliran dibuat dan berada dalam keadaan "baru lahir". Iaitu, apabila benang dicipta, ia memasuki keadaan baharu, tetapi kaedah mula() belum lagi dipanggil pada contoh itu. 2. Boleh Lari. Keadaan ini bermakna bahawa benang sedia untuk dijalankan. Apabila kaedah start() dipanggil pada utas baharu, ia menjadi sedia untuk dimulakan. Dalam keadaan ini, benang menunggu sehingga pemproses tersedia (masa CPU). Iaitu, benang menjadi baris gilir (siri) benang yang menunggu untuk dilaksanakan. 3. Berlari (running state). Melaksanakan bermakna bahawa pemproses telah memperuntukkan slot masa untuk utas untuk dilaksanakan. Ini ialah keadaan di mana benang melaksanakan fungsi sebenar. 4. Disekat (keadaan disekat). Benang berada dalam keadaan tersekat apabila ia berhenti seketika, tidur atau menunggu beberapa lama untuk memenuhi syarat tertentu. 5. Keadaan Mati. Keadaan ini berlaku apabila kaedah run() selesai melaksanakan arahan. Benang secara automatik berhenti atau masuk ke Keadaan Mati. Dalam erti kata lain, apabila thread keluar dari run() method , ia sama ada ditamatkan atau menjadi mati.

Antara Muka Fungsian dan Kaedah Lalai dalam Java 8

Sumber: Sederhana Dalam artikel ini, anda akan mempelajari beberapa perubahan yang diperkenalkan dalam Java 8, iaitu antara muka berfungsi dan kaedah lalai.

Apakah Kaedah Lalai?

Kami tahu bahawa kelas abstrak boleh mempunyai kaedah abstrak dan bukan abstrak (kaedah yang dilaksanakan), tetapi antara muka adalah 100% abstrak (semua kaedah ini hanya mempunyai tandatangan dan tiada pelaksanaan). Tetapi bagaimana jika kita memerlukan antara muka dan bukannya kelas dan fungsi biasa di antara semua kelas yang dilaksanakan? Kerana kemudian kod pelaksanaan diulang lagi dan lagi dalam setiap kelas yang melaksanakan antara muka. Untuk mengelakkan ini, Java 8 menambah kata kunci lalai . Jika kita mempunyai kaedah yang dilaksanakan dalam antara muka, maka kata kunci lalai mesti diberikan kepada kaedah itu, jika tidak, kita akan mendapat ralat masa jalan.

Apakah antara muka berfungsi?

Antara muka berfungsi tidak lain adalah antara muka dengan satu kaedah abstrak dan sebarang bilangan kaedah standard atau statik. Contoh antara muka berfungsi ialah Comparable, yang mempunyai satu kaedah abstrak, compareTo() . Sebaliknya, Runnable mempunyai kaedah run() dan sebagainya. Kami juga boleh mewakili antara muka berfungsi menggunakan anotasi @FunctionalInterface. Ia memastikan bahawa antara muka mempunyai hanya satu kaedah abstrak:
@FunctionalInterface
public interface MyfunctionalInterface{
   public void myabstractmethod();
   public static void method1(){
       //Имплементация
    }
   public default void method2(){
       //Имплементация
    }
}

Jenis antara muka berfungsi

Pengguna - mengambil satu hujah dan tidak mengembalikan apa-apa.
  • Tiga varian Consumer ialah DoubleConsumer, IntConsumer dan LongConsumer (bergantung pada jenis hujah yang mereka terima).
  • Bi-Pengguna - mengambil dua hujah dan tidak mengembalikan apa-apa.
Predikat - mengambil satu hujah dan mengembalikan nilai boolean.
  • Tiga varian Predikat ialah DoublePredicate, IntPredicate dan LongPredicate (bergantung pada jenis hujah yang mereka terima).
  • Bi-Predicate - mengambil dua argumen dan mengembalikan nilai boolean.
Fungsi - mengambil satu hujah dan mengembalikan satu nilai.
  • Banyak versi fungsi tersedia sebagai jenis hujah, dengan int , long dan double adalah yang paling biasa digunakan.
  • Bi-Function - mengambil dua argumen dan mengembalikan satu nilai.
  • Operator Unary dan Binary masing-masing melaksanakan Function dan Dwi-Function, tetapi syarat tambahan di sini ialah input dan output mestilah sama dan jenis yang sama.
Pembekal - Tidak menerima sebarang input tetapi mengembalikan satu nilai. Pelbagai versi Pembekal: BooleanSupplier, IntSupplier, LongSupplier dan DoubleSupplier, yang jenis pulangan adalah primitif yang sepadan.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION