Sebuah proses tunggal mungkin memiliki beberapa sub-tugas yang harus dilakukan untuk membuat proses lengkap.
Secara tradisional, mereka sub-tugas dilakukan secara berurutan dari pertama sampai terakhir.
Jika pertama sub-tugas membutuhkan waktu yang sangat lama untuk dilakukan, selanjutnya sub-tugas harus menunggu. Ini tidak efisien dalam hal waktu.
Untuk membuatnya efisien, melakukan hal-sub-tugas secara bersamaan menggunakan benang. - Bayangkan sebuah perpustakaan dengan hanya satu pustakawan dan beberapa pengunjung pada suatu waktu. Akan ada antrian yang sangat panjang. Ingat, pustakawan hanya dapat melayani satu pengunjung pada suatu waktu. Hal ini tidak efisien dari sudut pandang pengunjung. Bagaimana jika perpustakaan memiliki beberapa pustakawan? - Lihatlah sistem tubuh Anda, ada juta sub-tugas yang lebih kecil hidup. jantung Anda berdetak, perut Anda mencerna, kaki Anda melangkah di waktu! Tapi tetap Anda hanya memiliki satu otak, kan? Ada satu proses tunggal, hidup, tetapi ada beberapa sub-tugas. Langkah pertama yang harus dilakukan adalah membusuk proses tunggal ke dalam beberapa tugas yang lebih kecil yang merupakan salah satu independen yang lain . Sub-tugas mungkin berinteraksi satu sama lain untuk berbagi informasi. Sub-tugas yang harus dijalankan secara bersamaan untuk meningkatkan efisiensi. Untuk melakukannya, gunakan benang. Ada dua cara untuk membangun sebuah thread: Mewarisi kelas Thread dan mengganti metode run (); Pelaksana interface Runnable dan mengganti metode run (). Pilihan ini lebih baik dalam hal desain. Ingat contoh perpustakaan sebelumnya? Bila pengunjung meminta meminjam buku, pustakawan log transaksi pada buku log untuk melacak tujuan masa depan. Apa yang akan terjadi, jika ada beberapa pustakawan melayani beberapa pengunjung pada satu waktu, dan perlu diingat bahwa mereka harus log transaksi pada saat yang sama karena merupakan simultan? Hanya ada satu buku log tetapi beberapa permintaan untuk menulis log transaksi. Jika mereka pustakawan log transaksi sekaligus, beberapa mungkin hilang karena ditimpa. Ini disebut bagian kritis, ketika sumber daya diakses oleh beberapa tugas yang berbeda sekaligus. Mekanisme sinkronisasi diperlukan. Untuk mengatasi masalah ini, Java menyediakan kata kunci disinkronkan yang menangani bagian kritis dan mengelola tugas yang dapat memegang hak istimewa untuk mengakses sumber daya ketika tugas-tugas lain menunggu. Kami dapat menetapkan metode sebagai bagian kritis dengan memberikan kata kunci disinkronkan, bagian (blok) dari metode, atau bahkan variabel.
Sedang diterjemahkan, harap tunggu..