0% menganggap dokumen ini bermanfaat (0 suara)
25 tayangan4 halaman

Thread Pool Dengan Java's ExecutorService - Thomas Uhrig

Makalah ini membahas penggunaan thread pool dengan ExecutorService Java untuk menjalankan sejumlah tugas secara paralel. ExecutorService memungkinkan pengiriman banyak tugas untuk dieksekusi tetapi hanya menjalankan jumlah thread tetap secara bersamaan, sehingga meningkatkan efisiensi dibandingkan menjalankan setiap tugas sebagai thread terpisah. Contoh kode mendemonstrasikan pengiriman 100 tugas ke thread pool dengan ukuran maksimum

Diunggah oleh

Febrian Hafizzudin
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
25 tayangan4 halaman

Thread Pool Dengan Java's ExecutorService - Thomas Uhrig

Makalah ini membahas penggunaan thread pool dengan ExecutorService Java untuk menjalankan sejumlah tugas secara paralel. ExecutorService memungkinkan pengiriman banyak tugas untuk dieksekusi tetapi hanya menjalankan jumlah thread tetap secara bersamaan, sehingga meningkatkan efisiensi dibandingkan menjalankan setiap tugas sebagai thread terpisah. Contoh kode mendemonstrasikan pengiriman 100 tugas ke thread pool dengan ukuran maksimum

Diunggah oleh

Febrian Hafizzudin
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

8/9/2019 Thread pool dengan Java's ExecutorService - Thomas Uhrig

Saya menggunakan cookie untuk memastikan bahwa saya memberi Anda pengalaman terbaik di blog saya. Jika Anda
terus menggunakan situs ini, saya akan berasumsi bahwa Anda menyukainya.

Baik

dalam Coding

Thread pool dengan


Java's ExecutorService
Beberapa hari yang lalu saya harus melakukan migrasi data lama ke sistem
baru. Tugasnya terutama tentang menyalin hal-hal dari sistem lama ke
sistem baru. Ini dilakukan melalui antarmuka REST dari layanan baru. Jadi
tugas itu benar-benar terikat IO dan sebagian besar waktu skrip migrasi
menunggu respons panggilan REST. Situasi sempurna untuk melakukan
threading!

Idenya adalah memulai utas baru untuk setiap rekaman data untuk
dimigrasi. Jadi, sementara catatan pertama sudah menunggu tanggapan
REST, catatan kedua akan dibangun bersama dan dikirim ke layanan REST
dan seterusnya. Semoga ini akan mempercepat proses banyak.

Namun, karena saya mendapat sekitar ~ 5.000 catatan, saya tidak ingin
menelurkan utas baru untuk masing-masing. 5000 utas (pada saat yang
sama) akan sulit - untuk sistem saya sendiri dan juga untuk layanan REST.
Jadi saya memutuskan untuk menggunakan Java ExecutorService untuk
menelurkan sejumlah utas kapan saja:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
 
public class ExecutorServiceTest {

public static void main(String[] args) throws InterruptedException  {

// A maximum of 10 threads will run at any time!


ExecutorService executor = Executors.newFixedThreadPool(10);

// Submit and execute 100 threads!


for(int i = 0; i < 100; i++) {
final int number = i;
executor.execute(new Runnable() {
@Override
public void run() {

https://tuhrig.de/thread-pools-with-javas-executorservice/ 1/4
8/9/2019 Thread pool dengan Java's ExecutorService - Thomas Uhrig

System.out.println("Running " + number);


Saya menggunakan cookie untuk memastikan bahwa saya memberi Anda pengalaman terbaik di blog saya. Jika Anda
sleep();
terus menggunakan situs ini, saya akan berasumsi
System.out.println("Finishing " +bahwa Anda menyukainya.
number);
} Baik
});
    }
 
        System.out.println("Waiting...");
 
// No more threads can be submitted to the executor service!
executor.shutdown();

// Blocks until all 100 submitted threads have finished!


    executor.awaitTermination(Long.MAX_VALUE, TimeUnit.MINUTES);
    
    System.out.println("Done");
}
 
private static void sleep() {
try {
Thread.sleep(2000);
}
catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}

Dalam contoh di atas saya lakukan hal berikut:

1. Saya membuat ExecutorService contoh dengan ukuran tetap 10 utas.


Jadi kapan saja, maksimum 10 utas akan berjalan!
2. Saya menjalankan 100 utas. Namun, jika 10 utas sudah berjalan,
ExecutorService akan menunggu sampai salah satu dari mereka
selesai, sebelum memulai yang berikutnya.
3. Saya sebut shutdown() dan awaitTermination(...) di
ExecutorService mana akan membuat tidak mungkin untuk

menjalankan thread baru (kecuali 100 benang disampaikan


sebelumnya) dan blok sampai semua 100 benang telah selesai.

Pola ini memungkinkan untuk mengirimkan sejumlah besar utas untuk


dieksekusi, tetapi hanya menjalankan sejumlah utas tetap dalam kumpulan.

Salam,
Thomas

https://tuhrig.de/thread-pools-with-javas-executorservice/ 2/4
8/9/2019 Thread pool dengan Java's ExecutorService - Thomas Uhrig

Saya menggunakan cookie untuk memastikan bahwa saya memberi Anda pengalaman terbaik di blog saya. Jika Anda
terus menggunakan situs ini, saya akan berasumsi bahwa Anda menyukainya.
posting terkait Baik

Pengukuran Kinerja Java (Mikro)

Java vs JavaScript Build Tools

Menghitung Set Mandelbrot dengan Java Tasks

Java 8 di Eclipse (Juno)

 Tulis komen

KONTEN TERKAIT DENGAN TAG POLA DESAIN JAWA

https://tuhrig.de/thread-pools-with-javas-executorservice/ 3/4
8/9/2019 Thread pool dengan Java's ExecutorService - Thomas Uhrig

Saya menggunakan cookie untuk memastikan bahwa saya memberi Anda pengalaman terbaik di blog saya. Jika Anda
terus menggunakan situs ini, saya akan berasumsi bahwa Anda menyukainya.

Baik

Penerbit Independen diberdayakan oleh WordPress

https://tuhrig.de/thread-pools-with-javas-executorservice/ 4/4

Anda mungkin juga menyukai