Apa itu thread?
Secara fundamental, thread adalah tema, subjek, topik, atau fokus yang jelas dan terdefinisi dengan baik. Thread bisa muncul dalam komunikasi manusia, seperti grup chat bertopik atau pertukaran email. Thread juga bisa muncul dalam program software, seperti sistem operasi (OS) atau aplikasi.
Dalam teknologi, thread biasanya adalah urutan instruksi terkecil atau sequence of instructions yang bisa dikelola dan dijalankan oleh sebuah komputer; ini merupakan unit dasar dalam pemanfaatan prosesor (CPU).
Selain kode program dari thread itu sendiri, ada empat elemen utama yang digunakan untuk memantau dan mengendalikan sebuah thread:
- ID thread digunakan sebagai identitas untuk melacak thread tersebut.
- Program counter melacak lokasi memori dari instruksi yang sedang dieksekusi dalam thread.
- Set register mencakup lokasi memori sementara yang digunakan untuk menyimpan data dan hasil pemrosesan dari thread.
- Stack adalah ruang memori yang dialokasikan untuk thread dan digunakan selama eksekusinya.
Seperti yang ditunjukkan pada Gambar 1, sebuah proses biasanya terdiri dari beberapa (sering kali banyak) thread individual, yang sering disebut sebagai proses ringan (lightweight processes).
Thread sangat erat kaitannya dengan desain CPU. Secara tradisional, satu inti CPU (core) bekerja pada satu thread dalam satu waktu — pendekatan ini disebut single-threading — walaupun CPU single-threading juga bisa mengeksekusi beberapa instruksi sekaligus, yang dikenal dengan eksekusi superscalar.
Untuk mengoptimalkan kinerja eksekusi, CPU bisa menganalisis thread dan mengatur ulang urutan instruksinya agar dieksekusi secara lebih efisien. Biasanya CPU juga punya kemampuan seperti branch prediction, yang memungkinkan CPU memprediksi hasil dari pengambilan keputusan dalam thread dan mempercepat proses eksekusi.
Meski teknik ini mempercepat eksekusi satu thread, desainer CPU sudah lama berusaha mengembangkan prosesor yang bisa menangani lebih dari satu thread secara bersamaan. Teknologi ini baru benar-benar mainstream sejak Intel merilis prosesor Pentium 4 pada tahun 2002 dengan teknologi simultaneous multithreading (SMT), yang oleh Intel diberi nama Hyper-Threading Technology. Mayoritas CPU untuk komputer desktop bisa menangani dua thread per core, di mana masing-masing thread bertindak seperti core logis (meskipun hanya satu core fisik). CPU kelas enterprise bisa mendukung empat hingga delapan thread per core.
OS dalam komputer bertanggung jawab mengalokasikan dan memantau sumber daya sistem. OS biasanya menyediakan tool bawaan untuk memantau thread dan proses yang sedang berjalan. Contohnya, pengguna Windows 11 bisa mencari Task Manager dan memilih aplikasi Task Manager dari daftar hasil pencarian. Pilih tab Performance dan lihat laporan seperti pada Gambar 2.

Task Manager di Windows 11 dalam Gambar 2 menunjukkan bahwa saat itu terdapat 285 proses unik yang berjalan dan terdiri dari 5.099 thread. Namun, semua aktivitas tersebut hanya menggunakan 2% kapasitas CPU komputer.
Jumlah thread dan proses ini bisa berubah-ubah tergantung software yang berjalan. Misalnya, membuka aplikasi baru atau menginstal driver akan menambah jumlah thread dan proses, sedangkan menutup aplikasi akan menguranginya. Karena thread adalah komponen dari proses, pengguna biasanya tidak bisa menghentikan thread secara spesifik (karena ini bisa menyebabkan proses rusak). Sebaliknya, pengguna bisa menghentikan proses secara keseluruhan — misalnya dengan menutup aplikasi atau menghentikan driver — dan semua thread yang terkait dengan proses itu akan berhenti.
Jenis-jenis thread
Konsep thread umumnya muncul di dua bidang utama: komunikasi elektronik dan ilmu komputer. Meskipun konteksnya berbeda, konsep dasarnya tetap sama — bekerja dengan satu topik atau potongan kode tertentu.
Dalam komunikasi, thread sering kita temui di forum. Thread biasanya menjadi topik atau fokus pertukaran elektronik antara dua orang atau lebih, baik lewat teks, email, maupun berbagai platform forum (termasuk media sosial). Thread biasanya dimulai dari pertanyaan atau topik yang ditujukan ke satu atau lebih orang, lalu direspons dan berkembang menjadi rangkaian komunikasi hingga mencapai kesepakatan atau solusi.
Contohnya, seorang karyawan bisa mengirim email ke atasan dan HR untuk menanyakan soal pekerjaan. Atasan dan HR akan membalas untuk memberikan penjelasan atau solusi, yang kemudian berkembang menjadi rangkaian pesan sampai pertanyaan karyawan tersebut terjawab. Semua pesan dalam pertukaran itu merupakan satu thread.
Dalam ilmu komputer, thread biasanya merujuk ke urutan kode program yang harus dijalankan oleh komputer dan CPU. Dalam pemrograman, thread adalah seri instruksi terkecil yang saling terkait dalam suatu proses, yang bisa terdiri dari banyak thread. Misalnya, satu thread bisa menjalankan subrutin kecil untuk meminta dan menunggu input pengguna. Thread lain bisa digunakan untuk menerapkan algoritma matematika pada data.
Di OS, thread berfungsi sebagai urutan aktivitas yang dieksekusi dalam suatu proses — istilahnya thread of execution atau thread of control. OS biasanya menangani dua jenis thread utama:
- Thread level user, yaitu thread yang berasal dari proses (software) yang dijalankan oleh pengguna, menggunakan bahasa pemrograman seperti Java atau POSIX.
- Thread level kernel, yaitu thread yang dikelola langsung oleh OS. Ini merupakan kode yang menjalankan fungsi-fungsi dasar OS, bukan aplikasi pengguna. Kernel thread bisa digunakan untuk membuat dan mengatur user thread yang menjalankan aplikasi.
Apa itu multithreading?
Multithreading adalah desain inti CPU yang memungkinkan dua atau lebih thread — urutan instruksi terbatas — berjalan secara bersamaan. Dalam multithreading, setiap thread bisa berbagi sumber daya prosesor seperti ruang stack, meskipun antar thread belum tentu saling berkomunikasi.
Walaupun ide multiprocessing terdengar simpel, dalam praktiknya butuh keahlian pemrograman yang canggih untuk membuat thread bisa berbagi sumber daya prosesor tanpa menyebabkan konflik, seperti race condition atau deadlock, yang bisa merusak proses secara keseluruhan. Misalnya, programmer perlu memastikan bahwa dua thread tidak mencoba mengakses dan memodifikasi data yang sama di memori pada saat yang bersamaan — kondisi ini dikenal sebagai race condition. Jika tidak ditangani dengan benar, hal ini bisa menyebabkan error yang sulit dilacak. Oleh karena itu, konsep seperti mutex (mutual exclusion), semafor, dan penguncian (locking) digunakan untuk menyinkronkan akses antar thread.
Multithreading bisa meningkatkan efisiensi dan performa sistem, terutama pada aplikasi yang perlu menjalankan banyak tugas secara paralel, seperti server web, aplikasi streaming, atau program pengolahan data besar (big data). Dengan multithreading, CPU bisa memaksimalkan pemanfaatan core-nya, terutama ketika beberapa thread bisa berjalan bersamaan tanpa saling mengganggu.
Namun, multithreading juga punya tantangan. Debugging aplikasi multithreaded bisa lebih rumit dibanding aplikasi single-threaded karena alur eksekusinya tidak selalu bisa ditebak. Programmer harus sangat hati-hati untuk menghindari deadlock (dua atau lebih thread saling menunggu sumber daya yang tidak pernah tersedia) dan livelock (thread terus berjalan tetapi tidak menghasilkan progres yang nyata).
Thread vs. Process
Walaupun thread dan proses sering kali digunakan dalam konteks yang mirip, keduanya berbeda secara mendasar. Sebuah proses adalah satuan eksekusi yang mandiri dengan memori sendiri, sedangkan thread adalah bagian dari proses yang berbagi sumber daya dengan thread lain dalam proses yang sama. Dengan kata lain, satu proses bisa punya banyak thread, dan semua thread itu berbagi ruang alamat memori yang sama.
Karena thread dalam satu proses berbagi memori, komunikasi antar thread (inter-thread communication) cenderung lebih cepat dan efisien dibanding komunikasi antar proses (inter-process communication atau IPC). Namun, karena berbagi memori, thread juga lebih rentan terhadap bug dan konflik jika tidak dikelola dengan hati-hati.
Kapan Menggunakan Thread?
Thread sangat berguna dalam berbagai skenario, misalnya:
- Responsivitas UI: Dalam aplikasi desktop atau mobile, thread bisa digunakan untuk menjalankan tugas latar belakang (background tasks) agar antarmuka pengguna tetap responsif.
- Paralelisasi Tugas: Dalam program yang melakukan banyak perhitungan, seperti simulasi atau rendering grafis, beberapa thread bisa memproses bagian berbeda dari data secara paralel.
- Server: Server web atau aplikasi sering menggunakan satu thread untuk menangani setiap permintaan (request) dari pengguna, memungkinkan banyak pengguna dilayani secara bersamaan.
Thread di Berbagai Bahasa Pemrograman
Banyak bahasa pemrograman modern menyediakan dukungan untuk multithreading. Berikut ini contoh dukungan thread di beberapa bahasa populer:
- Java: Java punya kelas
Thread
dan interfaceRunnable
yang memungkinkan developer membuat thread dengan mudah. - Python: Python menyediakan modul
threading
, walau karena Global Interpreter Lock (GIL), thread Python tidak selalu bisa memanfaatkan multi-core dengan optimal. - C++: Dengan C++11 dan setelahnya, tersedia kelas
std::thread
di standard library untuk manajemen thread. - Go: Go menggunakan “goroutine”, yang mirip thread tapi lebih ringan dan dikelola langsung oleh runtime Go.
Kesimpulan
Thread adalah unit terkecil dari eksekusi dalam suatu proses. Dalam konteks komputasi, thread membantu komputer menjalankan berbagai instruksi secara efisien. Dengan multithreading, sistem bisa menangani banyak tugas secara bersamaan, meningkatkan performa dan responsivitas, terutama dalam aplikasi berat atau real-time.
Namun, penggunaan thread juga butuh kehati-hatian karena kompleksitasnya. Synchronization, debugging, dan manajemen sumber daya adalah tantangan utama dalam pemrograman multithreaded. Dengan pemahaman dan praktik yang tepat, thread bisa menjadi alat yang sangat kuat dalam pengembangan software modern.