public static void main(String[] args) {
try {
throw new IOException();
} catch (Error | Exception ex) {
handle(ex);
}
}
public static void handle(Exception ex) {
System.out.println("exception");
}
public static void handle(IOException ex) {
System.out.println("ioexception");
}
public static void handle(Throwable t) {
System.out.println("throwable");
}
#java #javapuzzle
try {
throw new IOException();
} catch (Error | Exception ex) {
handle(ex);
}
}
public static void handle(Exception ex) {
System.out.println("exception");
}
public static void handle(IOException ex) {
System.out.println("ioexception");
}
public static void handle(Throwable t) {
System.out.println("throwable");
}
#java #javapuzzle
Co wypisze
- Błąd kompilacji 19.4% (7)
- exception 27.8% (10)
- ioexception 27.8% (10)
- throwable 25.0% (9)
W pewnej firmie tworzono aplikację wielowątkową. W wielu klasach stosowano następujący wzorzec:
- blokady są numerowane, żeby zapobiec deadlockom (zawsze synchronizowanie kolejno na LOCK1, LOCK2,...)
public class Main {
private static final Logger LOG = LoggerFactory.getLogger(Main.class.getName());
private static final String LOCK1 = "LOCK1";
private static final String LOCK2 = "LOCK2";
public void foo() {
synchronized (LOCK1) {
LOG.trace("Synchronized by: {}", LOCK1);
//...kod
synchronized (LOCK2) {
LOG.trace("Synchronized by: {}", LOCK2);
Czy z takim rozwiązaniem jest wszystko ok (biorę po plusie i zapraszam do głosowania i dyskusji)
Muszę tłumaczyć?
Jak ktoś chce się czegoś nauczyć to niech chociaż odpali kod i ewentualnie zada konkretne pytanie, a nie "dej mi odpowiedzi i wszystkie kombinacje bo inaczej ankieta do dupy".