Kitaran Hayat Benang di Jawa
Sumber:
Sederhana Artikel ini membincangkan keadaan kitaran hayat yang berbeza bagi benang di Jawa. Kitaran 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:
- Baru
- Boleh dijalankan
- Berlari
- Disekat
- 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.
GO TO FULL VERSION