Próbuję uruchomić następujący kod z punktów przerwa w następujący sposób:IntelliJ - nie zatrzymując się na wszystkich przerwań w kodzie wielowątkowym
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Starting"); //breakpoint here
}
}).start();
int i = 10;
i++; //breakpoint here
gdy ten kod działa tylko z I ++ przerwania jest trafiony ... Jeśli mogę usunąć ten, punkt przerwania drugiego wątku zostanie trafiony poprawnie. Dlaczego pojawia się to dziwne zachowanie?
Osobiście uważam, że jest to stan wyścigu. W moim przypadku * wznowić * nadal nie ** nie ** wywołać punktu przerwania w nowym wątku. Jedynym sposobem naprawy jest to, aby nie zerwać tuż przed rozpoczęciem nowego wątku. To wszystko działa. – kervin
Czy polityka zawieszania dla punktów przerwania jest ustawiona na "Wszystkie" (w przeciwieństwie do "Wątku")? –
Tak, wszyscy są. Mogę wywołać ten problem, po prostu przesuwając punkt przerwania bliżej/dalej od początku wątku, więc sam potwierdza pewne warunki wyścigu. – kervin