• Node.js
  • 24 April 2026
  • 79 Dilihat

Node.js dikenal dengan arsitektur event-driven dan non-blocking I/O yang membuatnya sangat efisien untuk tugas-tugas I/O-bound. Namun, ketika berhadapan dengan tugas-tugas yang membutuhkan banyak pemrosesan CPU (CPU-bound), seperti komputasi matematis kompleks, pemrosesan gambar, atau enkripsi, satu thread utama Node.js bisa menjadi bottleneck.

Apa itu Worker Threads?

Worker Threads adalah fitur di Node.js yang memungkinkan Anda menjalankan JavaScript dalam thread terpisah. Ini memungkinkan aplikasi Node.js untuk melakukan operasi yang membutuhkan banyak CPU tanpa memblokir event loop utama, sehingga aplikasi tetap responsif.

Mengapa Menggunakan Worker Threads?

  • Menangani Tugas CPU-Bound: Mencegah event loop utama terblokir oleh operasi yang intensif CPU.
  • Meningkatkan Performa: Memanfaatkan kekuatan multi-core dari CPU untuk melakukan pekerjaan secara paralel.
  • Skalabilitas: Memungkinkan aplikasi menangani beban kerja yang lebih besar dengan lebih efisien.

Cara Kerja Worker Threads

Anda dapat membuat worker baru menggunakan modul worker_threads. Setiap worker akan berjalan dalam thread terpisah dan memiliki memori JavaScript-nya sendiri. Komunikasi antara thread utama dan worker dilakukan melalui pengiriman pesan (message passing).

Contoh Sederhana

Berikut adalah contoh dasar penggunaan Worker Threads:


// main.js
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');

if (isMainThread) {
  console.log('Ini adalah thread utama.');
  const worker = new Worker('./worker.js', {
    workerData: { message: 'Halo dari thread utama!' }
  });

  worker.on('message', (msg) => {
    console.log('Pesan dari worker:', msg);
  });

  worker.on('error', (err) => {
    console.error('Error dari worker:', err);
  });

  worker.on('exit', (code) => {
    if (code !== 0) console.error(`Worker berhenti dengan kode keluar ${code}`);
    else console.log('Worker selesai dengan sukses.');
  });
} else {
  // Kode ini berjalan di dalam worker thread
  console.log('Ini adalah worker thread.');
  console.log('Data dari thread utama:', workerData.message);

  // Kirim pesan kembali ke thread utama
  parentPort.postMessage('Pesan balasan dari worker!');
}

Dalam contoh di atas:

  • main.js adalah file yang dijalankan sebagai thread utama.
  • worker.js (dalam kasus ini, logika ada di dalam blok else di file yang sama) akan dieksekusi di thread terpisah.
  • isMainThread digunakan untuk membedakan antara thread utama dan worker thread.
  • parentPort.postMessage() digunakan untuk mengirim pesan dari worker ke thread utama.
  • worker.on('message') di thread utama digunakan untuk menerima pesan dari worker.

Kapan Sebaiknya Menggunakan Worker Threads?

Worker Threads sangat cocok untuk:

  • Operasi kriptografi yang intensif.
  • Pemrosesan data besar (misalnya, parsing CSV, pengolahan data ilmiah).
  • Algoritma komputasi yang kompleks.
  • Tugas-tugas yang secara inheren paralel.

Pertimbangan Penting

  • Overhead: Membuat dan mengelola worker thread memiliki overhead tersendiri. Jangan gunakan untuk tugas-tugas yang sangat ringan.
  • Komunikasi: Pengiriman pesan antar thread bisa menjadi kompleks, terutama jika Anda perlu berbagi data yang besar atau kompleks. Gunakan SharedArrayBuffer untuk berbagi memori jika diperlukan, tetapi hati-hati terhadap race conditions.
  • Debugging: Debugging aplikasi multi-threaded bisa lebih menantang daripada aplikasi single-threaded.

Kesimpulan

Worker Threads adalah alat yang ampuh dalam toolkit Node.js untuk mengatasi keterbatasan pemrosesan CPU tunggal. Dengan memanfaatkannya dengan bijak, Anda dapat membangun aplikasi Node.js yang lebih cepat, lebih responsif, dan mampu menangani beban kerja yang lebih berat.

Tag Populer:
#node js #worker threads #javascript #multithreading #performa aplikasi #asynchronous #cpu-bound #paralelisme
Bagikan Artikel:

Artikel Terkait

Belajar Socket Emit di Node.js untuk Pemula
  • Node.js
  • 18 Agustus 2025

Belajar Socket Emit di Node.js untuk Pemula

Panduan lengkap belajar socket emit di Node.js untuk pemula. Pelajari cara mengirim dan menerima eve...

Membuat REST API CRUD dengan Node.js, Express, dan MySQL
  • Node.js
  • 12 Oktober 2025

Membuat REST API CRUD dengan Node.js, Express, dan MySQL

Pelajari cara membangun REST API CRUD lengkap menggunakan Node.js, Express, dan MySQL secara langkah...

Konsep Event Loop di Node.js: Cara Kerja dan Visualisasi yang Mudah Dipahami
  • Node.js
  • 04 Desember 2025

Konsep Event Loop di Node.js: Cara Kerja dan Visualisasi yang Mudah Dipahami

Pahami bagaimana Node.js bisa secepat kilat dan efisien meskipun berjalan di single thread berkat me...