Java-Multithread-Programmierung umfasst das Erstellen und Verwalten von Threads, um die gleichzeitige Ausführung zu ermöglichen. Es behandelt die Grundkonzepte von Threads, Synchronisation, Thread-Pools und praktische Beispiele: Threads sind leichtgewichtige Prozesse, die sich den Speicherplatz teilen und eine gleichzeitige Ausführung ermöglichen. Die Synchronisierung sichert den Zugriff auf gemeinsam genutzte Ressourcen durch Sperren oder atomare Operationen. Thread-Pools verwalten Threads, verbessern die Leistung und reduzieren den Aufwand für die Erstellung und Zerstörung. Praxisbeispiel nutzt Multithreading, um Dateien in einem Verzeichnis parallel zu scannen.
Wichtige Wissenspunkte für Java-Multithread-Programmierinterviews
1. Grundkonzept von Threads
Codebeispiel:
class MyThread extends Thread { public void run() { System.out.println("This is a thread"); } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } }
2. Synchronisierung von Threads
Codebeispiel (mit synchronisierter Verwendung):
class Counter { private int count; public synchronized void increment() { count++; } public synchronized int getCount() { return count; } } public class Main { public static void main(String[] args) { Counter counter = new Counter(); Thread thread1 = new Thread(() -> { for (int i = 0; i < 10000; i++) { counter.increment(); } }); Thread thread2 = new Thread(() -> { for (int i = 0; i < 10000; i++) { counter.increment(); } }); thread1.start(); thread2.start(); thread1.join(); thread2.join(); System.out.println(counter.getCount()); // 输出:20000 } }
3. Thread-Pool
Codebeispiel (mit ThreadPoolExecutor):
ExecutorService executor = Executors.newFixedThreadPool(5); for (int i = 0; i < 10; i++) { executor.submit(() -> { System.out.println("This is a thread from the pool"); }); } executor.shutdown();
4. Praxisfall: Dateiscan
Codebeispiel:
import java.io.File; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class FileScanner { private static void scan(File dir) { File[] files = dir.listFiles(); if (files == null) return; ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); for (File f : files) { executor.submit(() -> { if (f.isDirectory()) scan(f); else System.out.println(f.getAbsolutePath()); }); } executor.shutdown(); } public static void main(String[] args) { File root = new File("..."); // 替换为要扫描的目录 scan(root); } }
Das obige ist der detaillierte Inhalt vonGrundlegende Wissenspunkte für Java-Multithread-Programmierinterviews. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!