Pembangunan Java: Cara menggunakan multi-threading untuk melaksanakan pemprosesan tugas serentak
Pengenalan:
Dalam pembangunan perisian moden, pemprosesan tugas serentak yang cekap adalah penting. Di Jawa, multithreading ialah cara biasa dan berkuasa untuk melaksanakan pemprosesan tugas serentak. Artikel ini akan memperkenalkan anda kepada cara menggunakan multithreading untuk melaksanakan pemprosesan tugas serentak, dengan contoh kod khusus.
Kaedah 1: Warisi kelas Benang
public class MyThread extends Thread { public void run() { // 在这里写入线程运行时需要执行的代码 } } // 创建并启动线程 MyThread myThread = new MyThread(); myThread.start();
Kaedah 2: Laksanakan antara muka 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(); // 关闭线程池
Dalam kod sampel di atas, kami telah mencipta kumpulan benang dengan saiz tetap 5. Kemudian, kami menyerahkan 10 tugasan ke kumpulan benang untuk dilaksanakan dalam satu gelung. Akhir sekali, kami memanggil kaedah shutdown() untuk menutup kumpulan benang.
Gunakan pembolehubah kongsi:
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
Gunakan tunggu(), maklumkan() kaedah:
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
Kesimpulan:
Menggunakan multi-threading boleh mencapai pemprosesan tugas serentak dengan berkesan. Dalam artikel ini, kami memperkenalkan cara membuat utas, menggunakan kumpulan benang, melaksanakan komunikasi antara utas dan menyegerakkan kawalan antara utas dan menyediakan contoh kod khusus. Saya harap kandungan ini akan membantu anda dalam menggunakan multi-threading untuk melaksanakan pemprosesan tugas serentak dalam pembangunan Java!
Atas ialah kandungan terperinci Pembangunan Java: Cara menggunakan multi-threading untuk melaksanakan pemprosesan tugas serentak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!