Java コンカレント プログラミング コンカレント プログラミングの実践的な詳細説明: アプリケーションのパフォーマンスを向上させるマルチスレッド並列データ処理テクノロジ。 Java 同時実行メカニズム: スレッド: タスクを並列実行できる軽量の実行ユニット。ロック: 共有リソースへのアクセスを同期して、同時操作を回避します。アトミック操作: 中断はなく、すべて成功するかすべて失敗します。同時コレクション: マルチスレッド操作を可能にするスレッドセーフなコレクション クラス。実際のケース: Web ページのマルチスレッド クロールでは、ExecutorService と CompletionService を使用してスレッドを管理し、結果を収集してクロールの効率を向上させます。
Java 並行プログラミングの実践的な詳細な説明
はじめに
並行プログラミングは、データをマルチスレッドで並列処理するためのテクノロジであり、アプリケーションのパフォーマンスを大幅に向上させることができます。 Java には、スレッド、ロック、アトミック操作、同時コレクションなどの複数の同時実行メカニズムがあります。
スレッド
スレッドは、タスクを並列実行できる軽量の実行ユニットです。スレッドを作成するには、Thread
クラスを使用するか、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
等原子类来封装基本类型操作,以确保线程安全。
并发集合
并发集合是线程安全的集合类,允许多个线程同时访问和修改数据,而无需显式同步。常用的并发集合包括ConcurrentHashMap
和CopyOnWriteArrayList
。
实战案例:多线程爬取网页
下面是一个使用多线程爬取网页的实战案例:
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; } }
在这个案例中,多个线程并行爬取网页,提高了爬取效率。CompletionService
rrreee
synchronized
キーワードと ReentrantLock
クラスです。 🎜🎜🎜アトミック操作🎜🎜🎜アトミック操作は、すべてが正常に実行されるか、すべてが失敗するかのいずれかの中断のない操作です。 Java は、スレッドの安全性を確保するために基本的な型操作をカプセル化する AtomicInteger
などのアトミック クラスを提供します。 🎜🎜🎜同時コレクション🎜🎜🎜 同時コレクションは、明示的な同期を行わずに複数のスレッドが同時にデータにアクセスして変更できるようにするスレッドセーフなコレクション クラスです。一般的に使用される同時コレクションには、ConcurrentHashMap
と CopyOnWriteArrayList
が含まれます。 🎜🎜🎜実際のケース: Web ページのマルチスレッド クロール🎜🎜🎜 以下は、マルチスレッドを使用して Web ページをクロールする実際のケースです: 🎜rrreee🎜 この場合、複数のスレッドが Web ページを並行してクロールするため、クロール効率。 CompletionService
は、スレッドから返された結果を収集および管理するために使用され、マルチスレッド管理の複雑さを回避します。 🎜以上がJavaの基礎から実践への入門: 並行プログラミングの実践的な詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。