Anda di halaman 1dari 6

Diterjemahkan dari bahasa Inggris ke bahasa Indonesia - www.onlinedoctranslator.

com

Java Concurrency - Ikhtisar

Jawa adalah bahasa pemrograman multi-utas yang berarti kita dapat


mengembangkan program multi-threaded menggunakan Java. Program
multithreaded berisi dua atau lebih bagian yang dapat berjalan secara
bersamaan dan setiap bagian dapat menangani tugas yang berbeda pada saat
yang sama memanfaatkan sumber daya yang tersedia secara optimal
khususnya ketika komputer Anda memiliki banyak CPU.
Menurut definisi, multitasking adalah ketika beberapa proses berbagi
sumber daya pemrosesan umum seperti CPU. Multi-threading memperluas
gagasan multitasking ke dalam aplikasi di mana Anda dapat membagi
operasi tertentu dalam satu aplikasi menjadi thread individu. Setiap utas
dapat berjalan secara paralel. OS membagi waktu pemrosesan tidak hanya
di antara aplikasi yang berbeda, tetapi juga di antara setiap utas dalam
suatu aplikasi. Multi-threading memungkinkan Anda untuk menulis
dengan cara di mana beberapa aktivitas dapat berjalan secara bersamaan
dalam program yang sama.

Siklus Hidup sebuah Thread


Sebuah thread melewati berbagai tahap dalam siklus hidupnya.
Misalnya, utas lahir, dimulai, berjalan, dan kemudian mati. Diagram
berikut menunjukkan siklus hidup lengkap utas.

!
Berikut ini adalah tahapan siklus hidup
• Baru - Sebuah utas baru memulai siklus hidupnya di status
baru. Tetap dalam keadaan ini sampai program memulai
utas. Ini juga disebut sebagaibenang lahir.
• Dapat dijalankan - Setelah utas yang baru lahir dimulai, utas
menjadi dapat dijalankan. Sebuah thread dalam keadaan ini
dianggap menjalankan tugasnya.
• Menunggu - Terkadang, sebuah utas bertransisi ke status
menunggu sementara utas menunggu utas lain untuk
melakukan tugas. Sebuah utas bertransisi kembali ke status
yang dapat dijalankan hanya ketika utas lain memberi sinyal
kepada utas yang menunggu untuk melanjutkan eksekusi.
• Waktu Menunggu - Sebuah thread runnable dapat memasuki status
menunggu waktunya untuk interval waktu tertentu. Sebuah utas
dalam status ini bertransisi kembali ke status yang dapat
dijalankan saat interval waktu tersebut berakhir atau saat
peristiwa yang ditunggu terjadi.
• Dihentikan (Mati) - Sebuah thread runnable memasuki
keadaan terminasi ketika menyelesaikan tugasnya atau
sebaliknya berakhir.

Prioritas Utas
Setiap utas Java memiliki prioritas yang membantu sistem operasi
menentukan urutan utas yang dijadwalkan. Prioritas utas Java berada
dalam kisaran antara MIN_PRIORITY (konstanta 1) dan MAX_PRIORITY
(konstanta 10). Secara default, setiap utas diberi prioritas
NORM_PRIORITY (konstanta 5).

Utas dengan prioritas lebih tinggi lebih penting untuk suatu program
dan harus dialokasikan waktu prosesor sebelum utas dengan prioritas
lebih rendah. Namun, prioritas utas tidak dapat menjamin urutan
pelaksanaan utas dan sangat bergantung pada platform.

Buat Utas dengan Menerapkan Antarmuka


yang Dapat Dijalankan
Jika kelas Anda dimaksudkan untuk dieksekusi sebagai utas maka Anda
dapat mencapainya dengan menerapkan a Dapat dijalankan antarmuka.
Anda harus mengikuti tiga langkah dasar
Langkah 1
Sebagai langkah pertama, Anda perlu mengimplementasikan metode run() yang
disediakan oleh a Dapat dijalankan antarmuka. Metode ini memberikan titik masuk
untuk utas dan Anda akan memasukkan logika bisnis lengkap Anda
di dalam metode ini. Berikut ini adalah sintaks sederhana dari
metode run()
menjalankan kekosongan publik ( )

Langkah 2
Sebagai langkah kedua, Anda akan membuat instance Benang objek
menggunakan konstruktor berikut
Utas (ThreadObj yang dapat dijalankan, String threadName);
Di mana, threadObj adalah turunan dari kelas yang mengimplementasikan
Dapat dijalankan antarmuka dan nama thread adalah nama yang
diberikan untuk utas baru.
Langkah 3
Setelah objek Thread dibuat, Anda dapat memulainya dengan memanggil
Mulailah() metode, yang mengeksekusi panggilan ke metode run().
Berikut ini adalah sintaks sederhana dari metode start()
batal mulai();
Contoh
Berikut adalah contoh yang membuat utas baru dan mulai
menjalankannya
Demo Langsung

kelas Demo yang dapat dijalankan mengimplementasikan Dapat dijalankan {


pribadi Benang T;
pribadi Rangkaian nama thread;

Demo yang dapat dijalankan(Rangkaian nama) {


nama thread = nama;
Sistem.keluar.println("Menciptakan" + nama thread );
}

kekosongan publik Lari() {


Sistem.keluar.println("Berlari " + nama thread );

mencoba {

untuk(ke dalam Saya = 4; Saya > 0; Saya--) {


Sistem.keluar.println("Benang: " + nama thread + ","
+ Saya);

// Biarkan utas tidur sebentar.


Benang.tidur(50);
}
} menangkap (Pengecualian Terganggu e) {
Sistem.keluar.println("Benang " + nama thread + "
terganggu.");
}
Sistem.keluar.println("Benang " + nama thread + "keluar.");

kekosongan publik Mulailah () {


Sistem.keluar.println("Mulai" + nama thread );

jika (T == batal) {
T = baru Benang (ini, nama thread);
T.Mulailah ();
}
}
}

kelas umum Benang Tes {

kekosongan statis publik utama(Rangkaian argumen[]) {


Demo yang dapat dijalankan R1 = baru Demo yang dapat dijalankan("Utas-1");
R1.Mulailah();

Demo yang dapat dijalankan R2 = baru Demo yang dapat dijalankan("Benang-2");


R2.Mulailah();
}
}
Ini akan menghasilkan hasil berikut
Keluaran
Membuat Utas-1
Memulai Utas-1
Membuat Utas-2
Memulai Benang-2
Berlari Benang-1
Benang: Benang-1, 4
Berlari Benang-2
Benang: Benang-2, 4
Benang: Benang-1, 3
Benang: Benang-2, 3
Benang: Benang-1, 2
Benang: Benang-2, 2
Benang: Benang-1, 1
Benang: Benang-2, 1
Utas Utas-1 keluar. Utas
Benang-2 keluar.

Buat Thread dengan Memperluas Kelas


Thread
Cara kedua untuk membuat utas adalah dengan membuat kelas baru yang
diperluas Benang kelas menggunakan dua langkah sederhana berikut.
Pendekatan ini memberikan lebih banyak fleksibilitas dalam menangani
beberapa utas yang dibuat menggunakan metode yang tersedia di kelas Utas.
Langkah 1
Anda harus menimpa berlari( ) metode yang tersedia di kelas Thread.
Metode ini menyediakan titik masuk untuk utas dan Anda akan
memasukkan logika bisnis lengkap Anda ke dalam metode ini. Berikut
ini adalah sintaks sederhana dari metode run()
menjalankan kekosongan publik ( )

Langkah 2
Setelah objek Thread dibuat, Anda dapat memulainya dengan memanggil
Mulailah() metode, yang mengeksekusi panggilan ke metode run().
Berikut ini adalah sintaks sederhana dari metode start()
batal mulai();
Contoh
Berikut adalah program sebelumnya yang ditulis ulang untuk memperpanjang Thread
-
Demo Langsung

kelas ThreadDemo meluas Benang {


pribadi Benang T;
pribadi Rangkaian nama thread;

ThreadDemo(Rangkaian nama) {
nama thread = nama;
Sistem.keluar.println("Menciptakan" + nama thread );
}

kekosongan publik Lari() {


Sistem.keluar.println("Berlari " + nama thread );

mencoba {

untuk(ke dalam Saya = 4; Saya > 0; Saya--) {


Sistem.keluar.println("Benang: " + nama thread + ","
+ Saya);

// Biarkan utas tidur sebentar.


Benang.tidur(50);
}
} menangkap (Pengecualian Terganggu e) {
Sistem.keluar.println("Benang " + nama thread + "
terganggu.");
}
Sistem.keluar.println("Benang " + nama thread + "keluar.");

}
kekosongan publik Mulailah () {
Sistem.keluar.println("Mulai" + nama thread );

jika (T == batal) {
T = baru Benang (ini, nama thread);
T.Mulailah ();
}
}
}

kelas umum Benang Tes {

kekosongan statis publik utama(Rangkaian argumen[]) {


ThreadDemo T1 = baru ThreadDemo("Utas-1");
T1.Mulailah();

ThreadDemo T2 = baru ThreadDemo("Benang-2");


T2.Mulailah();
}
}
Ini akan menghasilkan hasil berikut
Keluaran
Membuat Utas-1
Memulai Utas-1
Membuat Utas-2
Memulai Benang-2
Berlari Benang-1
Benang: Benang-1, 4
Berlari Benang-2
Benang: Benang-2, 4
Benang: Benang-1, 3
Benang: Benang-2, 3
Benang: Benang-1, 2
Benang: Benang-2, 2
Benang: Benang-1, 1
Benang: Benang-2, 1
Utas Utas-1 keluar. Utas
Benang-2 keluar.

Halaman sebelumnya
Mencetak

Halaman selanjutnya

Anda mungkin juga menyukai