Tugas

THREAD

hread (singkatan dari “thread of execution“) dalam ilmu komputer, diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan ulir lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu ulir ke ulir lainnya) atau multiprocess (ketika ulir-ulir tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem). Ulir sebenarnya mirip dengan proses, tapi cara berbagi sumber daya antara proses dengan ulir sangat berbeda. Multiplethread dapat dilaksanakan secara sejajar pada sistem komputer. Secara umum multithreading melakukan time-slicing (sama dengan time-division multipleks), di mana sebuah CPU bekerja pada ulir yang berbeda, di mana suatu kasus ditangani tidak sepenuhnya secara serempak, untuk CPU tunggal pada dasarnya benar-benar melakukan sebuah pekerjaan pada satu waktu. Teknik penggantian (switching) ini memungkinkan CPU seolah-olah bekerja secara serempak.

Sebuah thread adalah eksekusi dalam sebuah program. Java Virtual Machine yang memungkinkan sebuah aplikasi untuk mempunyai beberapa thread eksekusi berjalan secara bersamaan. Setiap thread memiliki prioritas. Threads dengan prioritas lebih tinggi dijalankan dalam preferensi untuk benang dengan prioritas yang lebih rendah. Setiap thread mungkin atau mungkin tidak juga akan ditandai sebagai daemon. Ketika kode berjalan di beberapa thread menciptakan sebuah objek thread baru, thread baru memiliki prioritas awalnya ditetapkan sama dengan prioritas menciptakan benang, dan benang daemon jika dan hanya jika benang menciptakan sebuah daemon. Ketika sebuah Java Virtual Machine dijalankan, biasanya ada satu non-daemon thread (yang biasanya memanggil metode bernama utama dari beberapa kelas yang ditunjuk). Java Virtual Machine terus melaksanakan benang sampai salah satu dari berikut terjadi: * Metode yang keluar kelas Runtime telah dipanggil dan manajer keamanan telah diizinkan keluar operasi berlangsung. * Semua benang yang tidak daemon benang telah meninggal, baik dengan kembali dari menjalankan panggilan ke metode atau dengan melemparkan sebuah pengecualian yang menjalar di luar metode dijalankan. Ada dua cara untuk membuat thread baru eksekusi. Salah satunya adalah untuk menyatakan suatu kelas menjadi subkelas Thread. Subclass ini harus menimpa metode menjalankan kelas Thread. Turunan dari subclass kemudian dapat dialokasikan dan mulai. Sebagai contoh, sebuah thread yang menghitung bilangan prima lebih besar dari nilai yang dinyatakan dapat ditulis sebagai berikut:

class PrimeThread extends Thread {

long minPrime;

PrimeThread(long minPrime) {

this.minPrime = minPrime;

}

public void run() {

// compute primes larger than minPrime

. . .

}

}

Kode berikut kemudian akan menciptakan sebuah thread dan mulai menjalankannya:

PrimeThread p = new PrimeThread(143);
     p.start();

Cara lain untuk menciptakan sebuah thread adalah untuk menyatakan sebuah kelas yang mengimplementasikan interface Runnable. Kelas kemudian mengimplementasikan metode dijalankan. Sebuah instance dari kelas kemudian dapat dialokasikan, lulus sebagai argumen saat membuat Thread, dan mulai. Contoh yang sama dalam gaya yang lain ini tampak seperti berikut:

class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }

Kode berikut kemudian akan menciptakan sebuah thread dan mulai menjalankannya:

PrimeRun p = new PrimeRun(143);
     new Thread(p).start();

Setiap thread memiliki nama untuk tujuan identifikasi. Lebih dari satu thread mungkin memiliki nama yang sama. Jika nama tidak ditentukan ketika sebuah thread dibuat, nama baru dihasilkan untuk itu.

Tinggalkan komentar