me gustas: Tugas Mata Kuliah Fundamen Informatika - Artikel Float
Entry About Follow Dashboard




Contact Me

credits
Desember 09, 2019 | 0 Cloud(s)
Tugas Mata Kuliah Fundamen Informatika - Artikel Float

ARTIKEL THREAD
Oleh : Khairunnisa Nurrahmatia Salsabila
19523191 (A – Teknik Informatika)
Universitas Islam Indonesia
APA ITU THREAD?
Thread adalah rangkaian eksekusi dari sebuah aplikasi java dan setiap program java minimal memiliki satu buah thread. Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih mudahnya, bayangkanlah thread sebagai sebuah proses yang akan dieksekusi didalam sebuah program tertentu.

Penggunaan sistem operasi modern saat ini telah mendukung kemampuan untuk menjalankan beberapa program. Misalnya, pada saat Anda mengetik sebuah dokumen di komputer Anda dengan menggunakan text editor, dalam waktu yang bersamaan Anda juga dapat mendengarkan musik, dan surfing lewat internet di PC Anda. Sistem operasi yang telah terinstal dalam computer Anda itulah yang memperbolehkan Anda untuk menjalankan multitaskting. Seperti itu juga sebuah program (ibaratkan di PC Anda), ia juga dapat mengeksekusi beberapa proses secara bersama-sama(ibaratkan beberapa aplikasi berbeda yang bekerja pada PC Anda).
Sebuah contoh aplikasi adalah HotJava browser yang memperbolehkan Anda untuk browsing terhadap suatu page, bersamaan dengan mendownload object yang lain, misalnya gambar, memainkan animasi, dan juga file audio pada saat yang bersamaan.
Penjelasan
New : Sebuah thread baru dimulai siklus hidupnya pada keadaan baru. Masih dalam kondisi ini sampai program menjalankan thread. Hal ini juga disebut sebagai thread lahir. Saat thread berada di status new, belum ada sumber daya yang dialokasikan, sehingga thread belum bisa menjalankan perintah apapun.
Runnable : Setelah thread baru lahir dijalankan, thread menjadi runnable. Sebuah thread dalam kondisi ini ini dianggap telah mengeksekusi task-nya. Agar thread bisa menjalankan tugasnya, method start() dari kelas Thread harus dipanggil. Ada dua hal yang terjadi saat pemanggilan method start(), yaitu alokasi memori untuk thread yang dibuat dan pemanggilan method run(). Saat method run() dipanggil, status thread berubah menjadi runnable, artinya thread tersebut sudah memenuhi syarat untuk dijalankan oleh JVM. Thread yang sedang berjalan juga berada di status runnable.
Waiting : Kadang-kadang transisi thread ke keadaan menunggu(waiting state) selama thread menunggu thread lain untuk menjalankan task. Sebuah transisi thread kembali ke keadaan runnable hanya ketika sinyal thread lain menunggu untuk melanjutkan eksekusi.
Timed waiting : Sebuah runnable thread dapat memasuki keadaan timed waiting untuk interval tertentu. Sebuah thread  dalam keadaan transisi ini kembali ke keadaan runnable  ketika interval waktu berakhir atau ketika event menunggu untuk terjadi.
Terminated : Sebuah thread runnable memasuki keadaan dihentikan(terminated) ketika menyelesaikan task-nya atau berakhir(terminate).
State dari Thread (status)
Sebuah thread memungkinkan untuk memiliki beberapa state:
1. Running
Sebuah thread yang pada saat ini sedang dieksekusi dan didalam control dari CPU.
2. Ready to run
Thread yang sudah siap untuk dieksekusi, tetapi masih belum ada kesempatan untuk melakukannya.
3. Resumed
Setelah sebelumnya di block atau diberhentikan sementara, state ini kemudian siap untuk dijalankan.
4. Suspended
Sebuah thread yang berhenti sementara, dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja.
5. Blocked
Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan, karena ia akan menunggu sebuah resource tersedia atau sebuah event terjadi.
PRIORITAS THREAD
Setiap thread Java mempunyai prioritas yang membantu sistem operasi menentukan urutan thread dijadwalkan.

Prioritas Java berada dalam kisaran antara MIN_PRIORITY (konstanta 1) dan MAX_PRIORITY (konstanta 10). Secara default, setiap thread diberikan prioritas NORM_PRIORITY (konstanta 5).
Thread dengan prioritas lebih tinggi lebih penting untuk program dan harus dialokasikan sebelum thread dengan lower-priority(prioritas lebih rendah).
Contohnya, sering kali ketika kita mengeksekusi program dengan urutan dari kiri ke kanan, atas ke bawah. Kalo Multi-Threading adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.
Baris perintah nomer 8 akan dieksekusi setelah nomer 7 selesai, dan tentunya itu setelah nomer 6 selesai. Dan jangan harap nomer 5 akan dieksekusi apabila nomer 1 belum selesai.
MULTITHREADING
Dukungan thread disediakan pada tingkat user yaitu user threads dan kernel threads. User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung dan diatur secara langsung oleh sistem operasi.

Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:
Model One to One:
Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One..
Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.
Model Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat.
Jadi, multiple thread tidak dapat berjalan secara paralel pada multiprocessor. Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One
Model ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna thread. Jumlah thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin.
Many-to-One model mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu.
One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas).
Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara ysteml pada multiprocessor.
Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh ystem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.
Keuntungan Thread
1.       Responsif :
Aplikasi yg multithreading dapat meningkatkan respons terhadap user Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan user untuk menampilkan video, sementara thread lain berusaha menampilkan image.
2.      Berbagi Sumber Daya :
Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
3.      Ekonomis :
Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis
4.      Utilisasi arsitektur multiprocessor:
Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda.
Membuat Thread dengan Mengimplementasikan Runnable:
Cara termudah untuk membuat sebuah thread adalah untuk membuat sebuah kelas yang mengimplementasikan interface Runnable.
Untuk mengimplementasikan Runnable, kelas hanya perlu menerapkan metode tunggal yang disebut run(), yang dinyatakan seperti ini:

public void run( )

Anda akan menentukan kode yang merupakan thread baru dalam method run(). Adalah penting untuk memahami bahwa run () dapat memanggil method lain, menggunakan kelas-kelas lain, dan menyatakan variabel, seperti thread utama.
Setelah anda membuat sebauh kelas yang mengimplementasikan Runnable, anda akan instantiate sebuah objek dari tipe Thread dari dalam kelas tersebut. Thread mendefinisikan beberapa construktor. Salah satu yang akan kita gunakan adalah ditampilkan di sini:

Thread(Runnable threadOb, String threadName);

Di sini threadOb adalah sebuah instance dari sebuah kelas yang mengimplementasikan interface Runnable dan nama thread baru ditentukan oleh threadName.

Setelah thread baru dibuat, tidak akan mulai berjalan sampai anda memanggil method start(), yang dideklarasikan dalam Thread. Method start() ditampilkan di sini:

void start( );

Contoh :
public class RunnableThread implements Runnable {
    Thread thread;
    RunnableThread(String name) {
        thread = new Thread(this, name);
        thread.start();
    }
    public void run() {
        String name = thread.getName();
        for (int i = 0; i < 100; i++) {
            System.out.println(name);
        }
    }
    public static void main(String[] args) {
        new RunnableThread(“A”);
        new RunnableThread(“B”);
        new RunnableThread(“C”);
        new RunnableThread(“D”);
    }
}
Membuat Thread dengan Menurunkan (extend) class Thread
Cara kedua untuk membuat sebuah thread adalah untuk menciptakan sebuah kelas baru yang menurunkan(extend) Thread, dan kemudian untuk membuat sebuah instance dari kelas itu.

Kelas extend harus override metode run(), yang merupakan entry point untuk thread baru. Hal ini juga harus memanggil start() untuk memulai eksekusi dari thread baru.

Contoh:
package thread;
public class cetakNamaThread extends Thread {
    cetakNamaThread(String name) {
        super(name);
        //menjalankan thread dengan satu kali instantiate
        start();
    }
    public void run() {
        String name = getName();
        for (int i = 0; i < 100; i++) {
            System.out.print(name);
        }
    }
    public static void main(String[] args) {
        cetakNamaThread ctt1 = new cetakNamaThread(“A”);
        cetakNamaThread ctt2 = new cetakNamaThread(“B”);
        cetakNamaThread ctt3 = new cetakNamaThread(“C”);
        cetakNamaThread ctt4 = new cetakNamaThread(“D”);
    }
}
Baiklah, sekian pemaparan sekilas tentang thread. Moon maaf apabila ada salah kata dalam penyampaian. Terima kasih.
Referensi :

0 Komentar:


Posting Komentar