Pls what's wrong with my code... it keeps saying.. " Program ran too long"
package com.codegym.task.task27.task2706;
/*
Eliminating deadlock
public static void kill(Knight knight1, Knight knight2) {
Knight knightMax = knight1.id > knight2.id ? knight1: knight2;
Knight knightMin = knight1.id > knight2.id ? knight2: knight1;
*/
public class Solution {
public void safeMethod(Object obj1, Object obj2) {
Object obj3=obj1.hashCode() > obj2.hashCode() ? obj1: obj2;
Object obj4 = obj1.hashCode() > obj2.hashCode()? obj2 : obj1;
synchronized (obj1) {
longTimeMethod();
synchronized (obj2) {
unsafeMethod(obj1, obj2);
}
}
}
public void longTimeMethod() {
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
}
protected void unsafeMethod(Object obj1, Object obj2) {
System.out.println(obj1 + " " + obj2);
}
public static void main(String[] args) {
final Object o1 = new Object();
final Object o2 = new Object();
final Solution solution = new Solution();
new Thread() {
@Override
public void run() {
solution.safeMethod(o1, o2);
}
}.start();
new Thread() {
@Override
public void run() {
solution.safeMethod(o2, o1);
}
}.start();
}
}