import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class Deadlock { static Lock lock1 = new ReentrantLock(); static Lock lock2 = new ReentrantLock(); public static void metode1(boolean first) { System.out.println("Starter metode"); lock1.lock(); try { if (first) metode2(false); System.out.println("Ferdig med metode"); } finally { lock1.unlock(); } } public static void metode2(boolean first) { System.out.println("Starter metode2"); lock2.lock(); try { if (first) metode1(false); System.out.println("Ferdig med metode2"); } finally { lock2.unlock(); } } public static void main(String[] args) { for (int i = 0; i <3; i++) { new Thread(() -> metode1(true)).start(); new Thread(() -> metode2(true)).start(); } } }