Код IT
← Каталог

JVM, память и потоки — Blocked

Фрагмент из «JVM, память и потоки»: Blocked.

Java main.java
public class BlockedExample {
    private static final Object lock = new Object();
    
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            synchronized (lock) {
                try {
                    Thread.sleep(2000); // удерживает монитор 2 секунды
                } catch (InterruptedException e) {}
            }
        });
        
        Thread t2 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("Получил монитор");
            }
        });
        
        t1.start();
        Thread.sleep(100); // дать t1 время захватить монитор
        t2.start();
        
        Thread.sleep(100);
        System.out.println("Состояние t2: " + t2.getState()); // BLOCKED
    }
}
public class BlockedExample {
    private static final Object lock = new Object();
    
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            synchronized (lock) {
                try {
                    Thread.sleep(2000); // удерживает монитор 2 секунды
                } catch (InterruptedException e) {}
            }
        });
        
        Thread t2 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("Получил монитор");
            }
        });
        
        t1.start();
        Thread.sleep(100); // дать t1 время захватить монитор
        t2.start();
        
        Thread.sleep(100);
        System.out.println("Состояние t2: " + t2.getState()); // BLOCKED
    }
}