Thread Pada Android


Ø    Pengertian Thread
Sebelum mengulas contoh thread pada android, sebaiknya kita mengetahui apa itu thread? Ulir, utas atau thread (singkatan dari "thread of execution") dalam ilmu komputer, diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan/dieksekusi  secara sejajar dengan thread 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, tetapi 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.
User level thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread atau yang biasa disebut Multithreading Models yaitu :
·         Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
·         Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
·         Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.


Ø    Thread Pada Android
Ketika sebuah aplikasi diluncurkan, sistem membuat thread eksekusi untuk aplikasi, yang disebut "utama." Thread ini sangat penting karena bertugas mengirim acara ke widget antarmuka pengguna yang sesuai, termasuk menggambar kegiatan. Hal ini juga hampir selalu thread di mana aplikasi Anda berinteraksi dengan komponen dari toolkit UI Android (komponen dari paket android.widget dan android.view ). Dengan demikian, utas utama juga terkadang disebut utas UI. Namun, dalam keadaan khusus, utas utama aplikasi mungkin bukan utas UI-nya; untuk informasi lebih lanjut, lihat Anotasi ulir .
Sistem tidak membuat utas terpisah untuk setiap komponen. Semua komponen yang berjalan dalam proses yang sama digunakan dalam untaian UI, dan panggilan sistem ke setiap komponen dikirim dari utas itu. Akibatnya, metode yang menanggapi callback sistem (seperti onKeyDown() untuk melaporkan tindakan pengguna atau metode callback siklus hidup) selalu berjalan di thread UI dari proses.
Misalnya, ketika pengguna menyentuh tombol di layar, thread UI aplikasi Anda mengirimkan acara sentuhan ke widget, yang pada gilirannya menetapkan keadaan yang ditekan dan mengirim permintaan yang tidak valid ke antrean acara. Thread UI mendeacekan permintaan dan memberi tahu widget yang harus digambar ulang itu sendiri.
Ketika aplikasi Anda melakukan pekerjaan intensif sebagai tanggapan terhadap interaksi pengguna, model satu utas ini dapat menghasilkan kinerja yang buruk kecuali Anda menerapkan aplikasi dengan benar. Khususnya, jika semuanya terjadi di utas UI, melakukan operasi panjang seperti akses jaringan atau kueri basis data akan memblokir seluruh UI. Ketika utas diblokir, tidak ada acara yang dapat dikirim, termasuk acara menggambar. Dari perspektif pengguna, aplikasi tampak menggantung. Lebih buruk lagi, jika thread UI diblokir selama lebih dari beberapa detik (sekitar 5 detik saat ini) pengguna disajikan dengan dialog " aplikasi tidak menanggapi " (ANR) yang terkenal. Pengguna mungkin kemudian memutuskan untuk berhenti dari aplikasi Anda dan menghapusnya jika mereka tidak puas.
Selain itu, perangkat UI tidak aman. Jadi, Anda tidak boleh memanipulasi UI Anda dari untaian pekerja — Anda harus melakukan semua manipulasi ke antarmuka pengguna Anda dari utas UI. Jadi, hanya ada dua aturan untuk model utas tunggal Android:
·         Jangan memblok UI thread.  Misalnya saat user menekan tombol, maka app menjalankan program yang loop sejuta kali sehingga membuat user interface macet. Ini akan berakibat muncul error ANR (App Not Responding). Resources pada smartphone jauh lebih terbatas daripada PC/laptop, sehingga aturan ini lebih ketat.
·      Jangan mengakses komponen UI di luar UI thread. Misalnya ada thread kedua dan thread ini mengakses TextView, Button dsb. Ini dapat menyebabkan error yang tidak terduga.










Komentar

Postingan populer dari blog ini

Soal & Jawaban Manajemen Proyek & Resiko BAB II “Konteks Manajemen Proyek dan TI”

Soal & Jawaban Manajemen Proyek & Resiko BAB IV “Manajemen Integrasi”

Soal & Jawaban Manajemen Proyek & Resiko BAB VIII “Manajemen Kualitas”