public class Deadlock { public static void main(String[] args) { String a = "lockA"; String b = "lockB"; new Thread(new Mythread(a,b),"t1").start(); new Thread(new Mythread(b,a),"t2").start(); } } class Mythread implements Runnable{ private String a; private String b; public Mythread(String a, String b){ this.a = a; this.b = b; } @Override public void run() { this.a = a; this.b = b; synchronized (a){ System.out.println("have "+a+ " lock"+" get "+ b+ " lock"); synchronized (b){ } } } }