Rumah > Java > javaTutorial > Mata pengetahuan penting untuk temu bual pengaturcaraan berbilang benang Java

Mata pengetahuan penting untuk temu bual pengaturcaraan berbilang benang Java

PHPz
Lepaskan: 2024-04-12 10:48:01
asal
1151 orang telah melayarinya

Java pengaturcaraan berbilang benang melibatkan penciptaan dan pengurusan benang untuk membolehkan pelaksanaan serentak. Ia merangkumi konsep asas benang, penyegerakan, kumpulan benang dan contoh praktikal: Benang ialah proses ringan yang berkongsi ruang memori dan membenarkan pelaksanaan serentak. Penyegerakan menjamin akses kepada sumber yang dikongsi melalui kunci atau operasi atom. Kumpulan benang mengurus benang, meningkatkan prestasi dan mengurangkan overhed penciptaan dan pemusnahan. Contoh praktikal menggunakan multi-threading untuk mengimbas fail dalam direktori secara selari.

Mata pengetahuan penting untuk temu bual pengaturcaraan berbilang benang Java

Titik pengetahuan penting untuk temu bual pengaturcaraan berbilang benang Java

1.

Benang membenarkan berbilang tugasan bebas dilaksanakan serentak dalam program yang sama.
  • Sampel kod:
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();
    }
}
Salin selepas log masuk

2. Penyegerakan benang

Penyegerakan benang memastikan perlumbaan data dielakkan apabila mengakses sumber kongsi.

Penyegerakan boleh dicapai dengan menggunakan mekanisme penguncian atau operasi atom.
  • Contoh kod (menggunakan disegerakkan):
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
    }
}
Salin selepas log masuk

3. Kolam benang

Kolam benang ialah set sumber yang menguruskan benang.

Ia meningkatkan prestasi dan mengurangkan overhed untuk mencipta dan memusnahkan benang.
  • Contoh kod (menggunakan 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();
Salin selepas log masuk

4 Kes praktikal: pengimbasan fail

Gunakan multi-threading untuk mengimbas fail dalam direktori yang besar secara selari.

  • Contoh kod:
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);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mata pengetahuan penting untuk temu bual pengaturcaraan berbilang benang Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan