Rumah > Java > javaTutorial > Apakah situasi yang menyebabkan kebuntuan di java?

Apakah situasi yang menyebabkan kebuntuan di java?

王林
Lepaskan: 2023-05-23 12:46:06
ke hadapan
1122 orang telah melayarinya

Empat situasi di mana Java menyebabkan kebuntuan

1 Kunci silang menyebabkan kebuntuan program: Contohnya, benang A memegang kunci R1 dan menunggu kunci R2, dan benang B memegang kunci R2 dan menunggu kunci R1.

2 Memori tidak mencukupi: Contohnya, dua utas T1 dan T2, T1 telah memperoleh 10MB memori, T2 telah memperoleh 15MB memori, kedua-dua T1 dan T2 perlu mendapatkan 30MB memori untuk berfungsi, tetapi bakinya memori yang tersedia ialah 10MB Dengan cara ini, kedua-dua utas saling menunggu untuk melepaskan sumber memori.

3. Pertukaran data soal jawab: Pelayan membuka port tertentu dan menunggu akses pelanggan Selepas pelanggan menghantar permintaan, pelayan terlepas permintaan pelanggan atas sebab tertentu, menyebabkan pelanggan menunggu untuk respons pelayan sementara pelayan menunggu klien menghantar permintaan.

4. Kebuntuan disebabkan oleh gelung tak terhingga: Anda tidak boleh melihat kebuntuan menggunakan alat seperti jstack, tetapi program tidak berfungsi dan penggunaan CPU adalah tinggi animasi sistem yang digantung, yang sukar untuk diselesaikan dan Muncul Semula.

Contoh berkaitan kebuntuan

public class Main {
    private final Object MUTEX_READ = new Object();
    private final Object MUTEX_WRITE = new Object();
 
    public void read(){
        synchronized (MUTEX_READ){
            synchronized (MUTEX_WRITE){
            }
        }
    }
 
    public void write(){
        synchronized (MUTEX_WRITE){
            synchronized (MUTEX_READ){
            }
        }
    }
 
    public static void main(String[] args) throws InterruptedException {
        Main m = new Main();
        new Thread(()->{
            while (true){
                m.read();
            }
        }).start();
        new Thread(()->{
            while (true){
                m.write();
            }
        }).start();
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah situasi yang menyebabkan kebuntuan di java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan