Java 다중 스레드 프로그래밍에는 동시 실행이 가능하도록 스레드를 생성하고 관리하는 작업이 포함됩니다. 스레드, 동기화, 스레드 풀 및 실제 예제의 기본 개념을 다룹니다. 스레드는 메모리 공간을 공유하고 동시 실행을 허용하는 경량 프로세스입니다. 동기화는 잠금 또는 원자성 작업을 통해 공유 리소스에 대한 액세스를 보호합니다. 스레드 풀은 스레드를 관리하고, 성능을 향상시키며, 생성 및 삭제 오버헤드를 줄입니다. 실제 예에서는 멀티스레딩을 사용하여 디렉터리의 파일을 병렬로 검색합니다.
Java 멀티 스레드 프로그래밍 인터뷰를 위한 필수 지식 포인트
1. 스레드의 기본 개념
코드 샘플:
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. 스레드 동기화
코드 예시(동기화 사용):
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. 스레드 풀
코드 샘플(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. 실제 사례: 파일 검색
코드 예:
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); } }
위 내용은 Java 멀티스레드 프로그래밍 인터뷰를 위한 필수 지식 포인트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!