Java基础入门到实战应用:并发编程实战详解

2024年 5月 8日 59.4k 0

java并发编程实战详解并发编程:多线程并行处理数据的技术,提高应用程序性能。java并发机制:线程:轻量级执行单元,可并行执行任务。锁:同步共享资源访问,避免同时操作。原子操作:不可中断,要么全部成功要么全部失败。并发集合:线程安全集合类,允许多线程操作。实战案例:多线程爬取网页使用executorservice和completionservice管理线程并收集结果,提高爬取效率。

Java基础入门到实战应用:并发编程实战详解-1

Java并发编程实战详解

引言

并发编程是多线程并行处理数据的技术,可以显著提高应用程序的性能。在Java中,有多种并发机制,包括线程、锁、原子操作和并发集合。

线程

线程是轻量级的执行单元,可以并行执行任务。要创建线程,可以使用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 completionService = new ExecutorCompletionService(executor);

        List 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;
    }
}

在这个案例中,多个线程并行爬取网页,提高了爬取效率。CompletionService用于收集和管理线程返回的结果,避免了多线程管理的复杂性。

以上就是Java基础入门到实战应用:并发编程实战详解的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论