Rumah > Java > javaTutorial > teks badan

Kunci untuk menguasai pengaturcaraan berbilang benang Java: belajar mencipta empat kumpulan benang

WBOY
Lepaskan: 2024-02-18 13:43:08
asal
916 orang telah melayarinya

Kunci untuk menguasai pengaturcaraan berbilang benang Java: belajar mencipta empat kumpulan benang

Pengaturcaraan berbilang benang Java ialah kemahiran penting dalam pembangunan perisian moden, yang boleh meningkatkan prestasi serentak dan kelajuan tindak balas sistem. Dalam pembangunan sebenar, kita selalunya perlu mengurus dan mengawal sebilangan besar utas. Sebagai alat pengaturcaraan serentak yang penting, kumpulan benang boleh membantu kami mengurus benang dengan cekap dan meningkatkan penggunaan sumber.

Artikel ini akan memperkenalkan empat kaedah penciptaan kumpulan benang yang biasa digunakan dalam Java dan menyediakan contoh kod khusus untuk membantu pembaca menguasai penggunaan kumpulan benang dengan cepat.

1. FixedThreadPool (kumpulan benang saiz tetap)

FixedThreadPool ialah kumpulan benang dengan bilangan utas teras yang tetap, bilangan utas maksimum tanpa had dan masa melahu benang tidak sah. Apabila menyerahkan tugasan, jika terdapat benang terbiar dalam kumpulan benang, ia akan dilaksanakan serta-merta; jika tiada benang terbiar, tugasan akan memasuki baris gilir menyekat dan menunggu. Kumpulan benang bersaiz tetap sesuai untuk melaksanakan tugasan nombor tetap jangka panjang.

Berikut ialah kod contoh untuk membuat kumpulan benang menggunakan FixedThreadPool:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class FixedThreadPoolExample {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(5);
        
        for (int i = 0; i < 10; i++) {
            final int taskId = i;
            executorService.execute(new Runnable() {
                public void run() {
                    System.out.println("Task " + taskId + " is running.");
                }
            });
        }
        
        executorService.shutdown();
    }
}
Salin selepas log masuk

2 (kumpulan benang cache)

CachedThreadPool ialah nombor utas teras 0, bilangan maksimum benang 0. masa melahu benang ialah 60 saat Kumpulan benang. Apabila menyerahkan tugasan, jika terdapat benang terbiar dalam kumpulan benang, ia akan dilaksanakan serta-merta; jika tiada benang terbiar, utas baharu akan dibuat. Apabila benang melahu selama lebih daripada 60 saat, ia ditamatkan dan dialih keluar daripada kumpulan benang. Kumpulan benang cache sesuai untuk melaksanakan sejumlah besar tugas jangka pendek dan boleh mencipta dan memusnahkan benang secara dinamik mengikut permintaan.

Berikut ialah contoh kod untuk menggunakan CachedThreadPool untuk mencipta kumpulan benang:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CachedThreadPoolExample {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newCachedThreadPool();
        
        for (int i = 0; i < 10; i++) {
            final int taskId = i;
            executorService.execute(new Runnable() {
                public void run() {
                    System.out.println("Task " + taskId + " is running.");
                }
            });
        }
        
        executorService.shutdown();
    }
}
Salin selepas log masuk

3 ScheduledThreadPool (kumpulan benang berjadual)

ScheduledThreadPool ialah kumpulan benang dengan bilangan teras maksimum yang tidak terhad. benang, digunakan untuk melaksanakan tugas pemasaan atau tugasan berulang. Kumpulan benang mengekalkan baris gilir kelewatan secara dalaman dan memproses tugasan dengan teratur mengikut masa kelewatan.

Berikut ialah kod contoh yang menggunakan ScheduledThreadPool untuk mencipta kumpulan benang dan melaksanakan tugasan berjadual:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledThreadPoolExample {
    public static void main(String[] args) {
        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);
        
        executorService.scheduleAtFixedRate(new Runnable() {
            public void run() {
                System.out.println("Task 1 is running.");
            }
        }, 0, 1, TimeUnit.SECONDS);
        
        executorService.scheduleWithFixedDelay(new Runnable() {
            public void run() {
                System.out.println("Task 2 is running.");
            }
        }, 0, 1, TimeUnit.SECONDS);
        
        executorService.shutdown();
    }
}
Salin selepas log masuk

4 SingleThreadExecutor (kumpulan benang tunggal)

SingleThreadExecutor nombor maksimum bagi threadExecutor. daripada urutan 1, Kumpulan benang dengan masa melahu yang tidak sah. Semua tugasan dilaksanakan secara bersiri dalam urutan yang sama dalam urutan masuk dahulu, keluar dahulu. Kumpulan benang berbenang tunggal sesuai untuk senario yang diperlukan untuk memastikan bahawa tugasan dilaksanakan dalam susunan dan susunan tertentu.

Berikut ialah contoh kod untuk menggunakan SingleThreadExecutor untuk mencipta kumpulan benang:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SingleThreadExecutorExample {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        
        for (int i = 0; i < 10; i++) {
            final int taskId = i;
            executorService.execute(new Runnable() {
                public void run() {
                    System.out.println("Task " + taskId + " is running.");
                }
            });
        }
        
        executorService.shutdown();
    }
}
Salin selepas log masuk

Dengan menguasai kaedah penciptaan empat kumpulan benang di atas, kami boleh memilih kumpulan benang yang sesuai mengikut senario yang berbeza, dengan itu meningkatkan prestasi konkurensi dan kelajuan tindak balas daripada program tersebut. Dalam pembangunan sebenar, kita juga perlu memberi perhatian kepada isu keselamatan benang dan tetapan parameter kolam benang yang munasabah untuk memberikan permainan penuh kepada kelebihan kumpulan benang.

Kami berharap contoh kod dan penjelasan yang diberikan dalam artikel ini dapat membantu pembaca dengan cepat menguasai kemahiran menggunakan kumpulan benang dalam pengaturcaraan berbilang benang Java, supaya mereka boleh menggunakan kumpulan benang dengan lebih cekap untuk meningkatkan prestasi program dalam pembangunan sebenar.

Atas ialah kandungan terperinci Kunci untuk menguasai pengaturcaraan berbilang benang Java: belajar mencipta empat kumpulan benang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan