Home  >  Article  >  Java  >  Essential knowledge points for Java multi-threaded programming interviews

Essential knowledge points for Java multi-threaded programming interviews

PHPz
PHPzOriginal
2024-04-12 10:48:011047browse

Java Multi-threaded programming involves creating and managing threads to enable concurrent execution. It covers the basic concepts of threads, synchronization, thread pools, and practical examples: Threads are lightweight processes that share memory space and allow concurrent execution. Synchronization secures access to shared resources through locks or atomic operations. Thread pools manage threads, improve performance, and reduce creation and destruction overhead. Practical example uses multi-threading to scan files in a directory in parallel.

Essential knowledge points for Java multi-threaded programming interviews

Essential knowledge points for Java multi-threaded programming interviews

1. Basic concepts of threads

  • Threads are lightweight processes in the operating system and share the same memory space as processes.
  • Threads allow multiple independent tasks to be executed simultaneously in the same program.

Code example:

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. Thread synchronization

  • Thread synchronization ensures that when accessing Avoid data races when sharing resources.
  • Synchronization can be achieved by using a lock mechanism or atomic operations.

Code example (using synchronized):

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

  • Thread pool Is a set of resources that manage threads.
  • It can improve performance and reduce the overhead of creating and destroying threads.

Code example (using 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. Practical case: file scanning

  • Use multiple threads to scan files in a large directory in parallel.

Code example:

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);
    }
}

The above is the detailed content of Essential knowledge points for Java multi-threaded programming interviews. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn