Rumah >Java >javaTutorial >Pengenalan kepada Asas Java kepada Aplikasi Praktikal: Penjelasan Praktikal Terperinci tentang Pengaturcaraan Serentak

Pengenalan kepada Asas Java kepada Aplikasi Praktikal: Penjelasan Praktikal Terperinci tentang Pengaturcaraan Serentak

王林
王林asal
2024-05-08 09:03:02616semak imbas

Java Concurrent Programming Penjelasan Terperinci Praktikal Pengaturcaraan Serentak: Teknologi pemprosesan data selari berbilang benang untuk meningkatkan prestasi aplikasi. Mekanisme konkurensi Java: Thread: unit pelaksanaan ringan yang boleh melaksanakan tugas secara selari. Kunci: Segerakkan akses kepada sumber yang dikongsi untuk mengelakkan operasi serentak. Operasi atom: tidak terganggu, sama ada semua berjaya atau semua gagal. Koleksi Serentak: Kelas pengumpulan selamat benang yang membenarkan operasi berbilang benang. Kes praktikal: Rangka berbilang benang halaman web menggunakan ExecutorService dan CompletionService untuk mengurus urutan dan mengumpul hasil untuk meningkatkan kecekapan rangkak.

Pengenalan kepada Asas Java kepada Aplikasi Praktikal: Penjelasan Praktikal Terperinci tentang Pengaturcaraan Serentak

Penjelasan praktikal terperinci tentang pengaturcaraan serentak Java

Pengenalan

Pengaturcaraan serentak ialah teknologi untuk pemprosesan data selari berbilang benang, yang boleh meningkatkan prestasi aplikasi dengan ketara. Di Java, terdapat berbilang mekanisme konkurensi, termasuk benang, kunci, operasi atom dan koleksi serentak.

Benang

Benang ialah unit pelaksanaan ringan yang boleh melaksanakan tugasan secara selari. Untuk membuat urutan, anda boleh menggunakan kelas Thread atau melaksanakan antara muka Runnable. Thread类或实现Runnable接口。

// 使用 Thread 类创建线程
Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello from thread!");
    }
});

// 使用 Runnable 创建线程
Runnable runnable = () -> System.out.println("Hello from runnable!");
Thread thread = new Thread(runnable);

锁用于同步对共享资源的访问,防止多个线程同时操作同一数据。Java中常用的锁是synchronized关键字和ReentrantLock类。

原子操作

原子操作是一种不可中断的操作,要么全部执行成功,要么全部失败。Java中提供了AtomicInteger等原子类来封装基本类型操作,以确保线程安全。

并发集合

并发集合是线程安全的集合类,允许多个线程同时访问和修改数据,而无需显式同步。常用的并发集合包括ConcurrentHashMapCopyOnWriteArrayList

实战案例:多线程爬取网页

下面是一个使用多线程爬取网页的实战案例:

import java.util.concurrent.*;
import java.util.List;

public class WebCrawler {

    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(10);
        CompletionService<String> completionService = new ExecutorCompletionService<>(executor);

        List<String> urls = List.of("url1", "url2", "url3", ..., "urlN");

        for (String url : urls) {
            completionService.submit(() -> fetchPage(url));
        }

        executor.shutdown();
        executor.awaitTermination(1, TimeUnit.DAYS);

        for (int i = 0; i < urls.size(); i++) {
            try {
                String page = completionService.take().get();
                System.out.println("Fetched page: " + page);
            } catch (InterruptedException | ExecutionException e) {
                e.printStackTrace();
            }
        }
    }

    private static String fetchPage(String url) {
        // 模拟爬取网页操作
        return "Page content for " + url;
    }
}

在这个案例中,多个线程并行爬取网页,提高了爬取效率。CompletionServicerrreee

🎜Locks🎜🎜🎜Locks digunakan untuk menyegerakkan akses kepada sumber yang dikongsi dan menghalang berbilang rangkaian daripada mengendalikan data yang sama pada masa yang sama. Kunci yang biasa digunakan dalam Java ialah kata kunci disegerakkan dan kelas ReentrantLock. 🎜🎜🎜Operasi atom🎜🎜🎜Operasi atom ialah operasi tanpa gangguan yang sama ada semuanya berjaya dilaksanakan atau semuanya gagal. Java menyediakan kelas atom seperti AtomicInteger untuk merangkum operasi jenis asas bagi memastikan keselamatan benang. 🎜🎜🎜Koleksi Serentak🎜🎜🎜Koleksi serentak ialah kelas koleksi selamat benang yang membenarkan berbilang urutan mengakses dan mengubah suai data secara serentak tanpa penyegerakan yang jelas. Koleksi serentak yang biasa digunakan termasuk ConcurrentHashMap dan CopyOnWriteArrayList. 🎜🎜🎜Kes praktikal: Merangkak berbilang benang halaman web🎜🎜🎜Berikut ialah kes praktikal menggunakan berbilang benang untuk merangkak halaman web: 🎜rrreee🎜Dalam kes ini, berbilang benang merangkak halaman web secara selari, yang meningkatkan kecekapan merangkak. CompletionService digunakan untuk mengumpul dan mengurus hasil yang dikembalikan oleh urutan, mengelakkan kerumitan pengurusan berbilang benang. 🎜

Atas ialah kandungan terperinci Pengenalan kepada Asas Java kepada Aplikasi Praktikal: Penjelasan Praktikal Terperinci tentang Pengaturcaraan Serentak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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