Java 開発: マルチスレッドを使用して同時タスク処理を実装する方法
はじめに:
現代のソフトウェア開発では、効率的な同時タスク処理が重要です。 Java では、マルチスレッドは同時タスク処理を実装するための一般的かつ強力な方法です。この記事では、マルチスレッドを使用してタスクの同時処理を実装する方法を、具体的なコード例とともに紹介します。
方法 1: Thread クラスの継承
public class MyThread extends Thread { public void run() { // 在这里写入线程运行时需要执行的代码 } } // 创建并启动线程 MyThread myThread = new MyThread(); myThread.start();
方法 2: Runnable インターフェイスの実装
public class MyRunnable implements Runnable { public void run() { // 在这里写入线程运行时需要执行的代码 } } // 创建并启动线程 Thread thread = new Thread(new MyRunnable()); thread.start();
ExecutorService executorService = Executors.newFixedThreadPool(5); // 创建线程池,指定线程数量为5 for (int i = 0; i < 10; i++) { executorService.execute(new MyRunnable()); // 提交任务给线程池执行 } executorService.shutdown(); // 关闭线程池
上記のサンプル コードでは、固定サイズ 5 のスレッド プールを作成します。次に、ループで実行するために 10 個のタスクをスレッド プールに送信します。最後に、shutdown() メソッドを呼び出してスレッド プールをシャットダウンします。
共有変数を使用する:
public class SharedData { private int count; public synchronized void increment() { count++; } public synchronized int getCount() { return count; } } SharedData sharedData = new SharedData(); // 创建并启动多个线程 for (int i = 0; i < 10; i++) { Thread thread = new Thread(() -> { sharedData.increment(); }); thread.start(); } // 等待所有线程执行完毕 Thread.sleep(1000); System.out.println(sharedData.getCount()); // 输出结果应为10
wait()、notify() メソッドを使用する:
public class Message { private String content; private boolean isEmpty = true; public synchronized String take() { while (isEmpty) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } isEmpty = true; notifyAll(); return content; } public synchronized void put(String content) { while (!isEmpty) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } isEmpty = false; this.content = content; notifyAll(); } } Message message = new Message(); // 创建并启动多个线程 Thread producerThread = new Thread(() -> { for (int i = 0; i < 10; i++) { message.put("Message " + i); Thread.sleep(1000); } }); Thread consumerThread = new Thread(() -> { for (int i = 0; i < 10; i++) { System.out.println(message.take()); Thread.sleep(1000); } }); producerThread.start(); consumerThread.start();
public class Counter { private int count = 0; public synchronized void increment() { count++; } public synchronized void decrement() { count--; } public synchronized int getCount() { return count; } } Counter counter = new Counter(); // 创建并启动多个线程 Thread incrementThread = new Thread(() -> { for (int i = 0; i < 1000; i++) { counter.increment(); } }); Thread decrementThread = new Thread(() -> { for (int i = 0; i < 1000; i++) { counter.decrement(); } }); incrementThread.start(); decrementThread.start(); incrementThread.join(); decrementThread.join(); System.out.println(counter.getCount()); // 输出结果应为0
結論:
マルチスレッドを使用すると、効率的にタスクの同時処理を実現できます。この記事では、スレッドの作成方法、スレッド プールの使用方法、スレッド間の通信の実装方法、スレッド間の制御の同期方法を紹介し、具体的なコード例を示します。この内容が、Java開発においてマルチスレッドを利用してタスクの同時処理を実現する際の参考になれば幸いです。
以上がJava 開発: マルチスレッドを使用して同時タスク処理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。