Home > Java > javaTutorial > What are the situations that cause deadlock in java?

What are the situations that cause deadlock in java?

王林
Release: 2023-05-23 12:46:06
forward
1177 people have browsed it

4 situations that cause deadlock in java

1. Cross lock causes program deadlock: For example, thread A holds the lock of R1 and waits for the lock of R2, and thread B holds the lock of R2 and waits for the lock of R1. .

2. Insufficient memory: For example, there are two threads T1 and T2. T1 has obtained 10MB of memory, and T2 has obtained 15MB of memory. Both T1 and T2 need to obtain 30MB of memory to work, but the remaining available memory is 10MB. In this way, both threads are waiting for each other to release memory resources.

3. Question-and-answer data exchange: The server opens a certain port and waits for client access. After the client sends a request, the server misses the client request for some reason, causing the client to wait for the server. response while the server waits for the client to send the request.

4. Deadlock caused by an infinite loop: It is relatively common. You cannot see the deadlock using tools such as jstack, but the program does not work and the CPU usage is high. This kind of deadlock is also called system suspended animation and is difficult to troubleshoot and resolve. Reappear.

Deadlock related examples

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();
    }
}
Copy after login

The above is the detailed content of What are the situations that cause deadlock in java?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
Statement of this Website
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
Latest Issues
Install JAVA
From 1970-01-01 08:00:00
0
0
0
Unable to install java
From 1970-01-01 08:00:00
0
0
0
Can java be used as the backend of the web?
From 1970-01-01 08:00:00
0
0
0
Is this in Java language?
From 1970-01-01 08:00:00
0
0
0
Help: JAVA encrypted data PHP decryption
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template