Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan .NET, Anda dapat menulis aplikasi yang melakukan beberapa operasi secara bersamaan. Operasi yang berpotensi menunda operasi lain dapat dijalankan pada utas terpisah, sebuah proses yang dikenal sebagai multithreading atau bebas utas.
Aplikasi yang menggunakan multithreading lebih responsif terhadap input pengguna karena antarmuka pengguna tetap aktif sementara tugas-tugas yang membutuhkan banyak prosesor dijalankan pada utas yang terpisah. Multithreading juga berguna saat Anda membuat aplikasi yang dapat diskalakan karena Anda dapat menambahkan utas saat beban kerja meningkat.
Nota
Jika Anda memerlukan kendali lebih atas perilaku utas aplikasi, Anda dapat mengelola utas tersebut secara mandiri. Namun, pemrograman multithread sangat disederhanakan dengan kelas System.Threading.Tasks.Parallel dan System.Threading.Tasks.Task, Parallel LINQ (PLINQ), kelas-kelas koleksi bersamaan di ruang nama System.Collections.Concurrent, dan model pemrograman yang berbasis pada konsep tugas bukan utas. Untuk informasi selengkapnya, lihat Pemrograman Paralel dan Pustaka Paralel Tugas (TPL).
Cara: Membuat dan memulai utas baru
Anda membuat utas baru dengan membuat instans kelas System.Threading.Thread yang baru. Anda memberikan ke konstruktor nama metode yang ingin Anda jalankan pada utas baru. Untuk memulai utas yang telah dibuat, panggil metode Thread.Start. Untuk informasi dan contoh selengkapnya, lihat artikel Membuat utas dan meneruskan data saat inisialisasi dan Thread referensi API.
Cara Menghentikan Thread
Untuk mengakhiri pelaksanaan thread, gunakan System.Threading.CancellationToken. Ini menyediakan cara terpadu untuk menghentikan thread secara kooperatif. Untuk informasi lebih lanjut, lihat Pembatalan pada thread yang dikelola.
Terkadang kita tidak bisa menghentikan thread secara kooperatif karena menjalankan kode pihak ketiga yang tidak dirancang untuk pembatalan kooperatif. Dalam hal ini, Anda mungkin ingin mengakhiri eksekusinya secara paksa. Untuk mengakhiri eksekusi utas secara paksa, dalam .NET Framework Anda dapat menggunakan metode Thread.Abort. Metode itu menaikkan ThreadAbortException pada utas tempat metode itu dipanggil. Untuk informasi selengkapnya, lihat Menghapus thread. Metode Thread.Abort ini tidak didukung di .NET Core. Jika Anda perlu mengakhiri eksekusi kode pihak ketiga secara paksa di .NET Core, jalankan dalam proses terpisah dan gunakan Process.Kill metode .
System.Threading.CancellationToken tidak tersedia sebelum .NET Framework 4. Untuk menghentikan utas dalam versi .NET Framework yang lebih lama, gunakan teknik sinkronisasi utas untuk mengimplementasikan pembatalan kooperatif secara manual. Misalnya, Anda dapat membuat bidang boolean volatile shouldStop dan menggunakannya untuk meminta kode yang dieksekusi oleh utas berhenti. Untuk informasi selengkapnya, lihat volatil dalam Referensi C# dan System.Threading.Volatile.
Gunakan metode Thread.Join untuk membuat utas pemanggil menunggu hingga utas yang dihentikan selesai.
Cara: Menghentikan atau menjeda utas.
Anda menggunakan metode Thread.Sleep untuk menunda utas saat ini selama jumlah waktu tertentu. Anda dapat mengganggu utas yang diblokir dengan memanggil metode Thread.Interrupt. Untuk informasi selengkapnya, lihat Menjeda dan mengganggu utas.
Pengaturan Utas
Tabel berikut menyajikan beberapa Thread properti:
| Harta benda | Deskripsi |
|---|---|
| IsAlive | Mengembalikan nilai true jika sebuah utas telah dimulai dan belum dihentikan secara normal atau dibatalkan. |
| IsBackground | Mendapatkan atau menetapkan nilai Boolean yang menunjukkan apakah sebuah utas adalah utas latar belakang. Utas latar belakang mirip dengan utas latar depan. Namun, utas latar belakang tidak mencegah proses berhenti. Setelah semua thread latar depan yang termasuk dalam suatu proses berhenti, runtime bahasa umum mengakhiri proses dengan memanggil metode Abort pada thread latar belakang yang masih berjalan. Untuk informasi selengkapnya, lihat Latar Depan dan Latar Belakang Thread. |
| Name | Mendapatkan atau mengatur nama utas. Paling sering digunakan untuk menemukan utas individu saat Anda melakukan debugging. |
| Priority | Mendapatkan atau menetapkan nilai ThreadPriority yang digunakan oleh sistem operasi untuk memprioritaskan penjadwalan utas. Untuk informasi selengkapnya, lihat Menjadwalkan utas dan referensi ThreadPriority. |
| ThreadState | Mendapatkan nilai ThreadState yang berisi status terkini dari sebuah utas. |