JavaRush /Java Blog /Random-ID /Rehat kopi #159. Siklus hidup thread di Java. Antarmuka F...

Rehat kopi #159. Siklus hidup thread di Java. Antarmuka Fungsional dan Metode Default di Java 8

Dipublikasikan di grup Random-ID

Siklus Hidup Thread di Java

Sumber: Medium Artikel ini membahas berbagai status siklus hidup thread di Java. Rehat kopi #159.  Siklus hidup thread di Java.  Antarmuka Fungsional dan Metode Default di Java 8 - 1Siklus hidup thread di Java terutama terdiri dari transisi ke berbagai keadaan, dimulai dengan kelahiran thread dan diakhiri dengan penghentian thread. Sebuah thread siap dijalankan ketika dibuat dan dimulai dengan memanggil metode start() pada kelas Thread . Ketika metode sleep() atau wait() kelas Thread dipanggil , thread menjadi tidak dapat digunakan. Untuk mengelola thread secara terprogram, penting untuk mengidentifikasi status thread. Mari kita pahami bagaimana siklus hidup thread Java menentukan statusnya. Inilah yang dikatakan dalam dokumentasi Java tentang hal ini: Thread adalah jalur eksekusi program yang dapat memasuki salah satu dari lima status selama siklus hidupnya:
  1. Baru
  2. Dapat dijalankan
  3. Berlari
  4. Diblokir
  5. Mati
1. Baru (keadaan baru lahir) terjadi ketika Anda membuat objek Thread di kelas Thread. Alirannya tercipta dan berada dalam kondisi “baru lahir”. Artinya, ketika sebuah thread dibuat, ia memasuki keadaan baru, namun metode start() belum dipanggil pada instance tersebut. 2. Dapat dijalankan. Keadaan ini berarti thread siap dijalankan. Ketika metode start() dipanggil pada thread baru, metode tersebut siap untuk dimulai. Dalam keadaan ini, thread menunggu hingga prosesor tersedia (waktu CPU). Artinya, thread menjadi antrian (rangkaian) thread yang menunggu untuk dieksekusi. 3. Berjalan (run state). Mengeksekusi berarti prosesor telah mengalokasikan slot waktu untuk mengeksekusi thread. Ini adalah keadaan di mana thread menjalankan fungsi sebenarnya. 4. Diblokir (keadaan diblokir). Sebuah thread berada dalam status diblokir ketika dijeda, tertidur, atau menunggu beberapa saat untuk memenuhi kondisi tertentu. 5. Keadaan Mati. Kondisi ini terjadi ketika metode run() selesai menjalankan instruksi. Thread secara otomatis berhenti atau masuk ke Keadaan Mati. Dengan kata lain, ketika sebuah thread keluar dari metode run() , thread tersebut akan berhenti atau mati.

Antarmuka Fungsional dan Metode Default di Java 8

Sumber: Medium Pada artikel ini, Anda akan mempelajari beberapa perubahan yang diperkenalkan di Java 8, yaitu antarmuka fungsional dan metode default.

Apa itu Metode Default?

Kita tahu bahwa kelas abstrak dapat memiliki metode abstrak dan non-abstrak (metode yang diimplementasikan), tetapi antarmukanya 100% abstrak (semua metode ini hanya memiliki tanda tangan dan tidak ada implementasi). Namun bagaimana jika kita memerlukan antarmuka, bukan kelas, dan fungsionalitas umum di antara semua kelas yang diimplementasikan? Karena kemudian kode implementasi diulangi lagi dan lagi di setiap kelas yang mengimplementasikan antarmuka. Untuk menghindari hal ini, Java 8 menambahkan kata kunci default . Jika kita memiliki metode yang diimplementasikan dalam sebuah antarmuka, maka kata kunci default harus ditetapkan ke metode tersebut, jika tidak kita akan mendapatkan error runtime.

Apa itu antarmuka fungsional?

Antarmuka fungsional tidak lain hanyalah antarmuka dengan satu metode abstrak dan sejumlah metode standar atau statis. Contoh antarmuka fungsional adalah Comparable, yang memiliki satu metode abstrak, bandingkanTo() . Pada gilirannya, Runnable memiliki metode run() dan seterusnya. Kami juga dapat merepresentasikan antarmuka fungsional menggunakan anotasi @FunctionalInterface. Ini memastikan bahwa antarmuka hanya memiliki satu metode abstrak:
@FunctionalInterface
public interface MyfunctionalInterface{
   public void myabstractmethod();
   public static void method1(){
       //Имплементация
    }
   public default void method2(){
       //Имплементация
    }
}

Jenis antarmuka fungsional

Konsumen - mengambil satu argumen dan tidak mengembalikan apa pun.
  • Tiga varian Konsumen adalah DoubleConsumer, IntConsumer dan LongConsumer (tergantung pada jenis argumen yang diterima).
  • Bi-Consumer - mengambil dua argumen dan tidak mengembalikan apa pun.
Predikat - mengambil satu argumen dan mengembalikan nilai boolean.
  • Tiga varian Predicate adalah DoublePredicate, IntPredicate dan LongPredicate (tergantung pada tipe argumen yang diterima).
  • Bi-Predikat - mengambil dua argumen dan mengembalikan nilai boolean.
Fungsi - mengambil satu argumen dan mengembalikan satu nilai.
  • Banyak versi fungsi tersedia sebagai tipe argumen, dengan int , long dan double menjadi yang paling umum digunakan.
  • Bi-Function - mengambil dua argumen dan mengembalikan satu nilai.
  • Operator Unary dan Binary masing-masing mengimplementasikan Fungsi dan Bi-Fungsi, namun syarat tambahannya di sini adalah input dan output harus identik dan bertipe sama.
Pemasok - Tidak menerima masukan apa pun tetapi mengembalikan satu nilai. Berbagai versi Pemasok: BooleanSupplier, IntSupplier, LongSupplier, dan DoubleSupplier, yang tipe pengembaliannya merupakan primitif yang sesuai.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION