To nie jest mój preferowany sposób, aby to zrobić, powodując ogromne zużycie procesora.
Jeśli to faktycznie działa kod, to po prostu zachowaj go w ten sposób. Sprawdzanie wartości logicznej raz na sekundę powoduje NIE wymierne obciążenie procesora. Absolutnie nic.
Prawdziwy problem polega na tym, że wątek sprawdzający wartość może nie zauważyć zmiany, która wydarzyła się przez arbitralnie długi czas z powodu buforowania. Aby upewnić się, że wartość jest zawsze zsynchronizowane między wątków, trzeba umieścić lotnych słowo kluczowe w definicji zmiennej, tj
private volatile boolean value;
Należy zauważyć, że wprowadzenie dostępu w synchronized
bloku, na przykład podczas korzystania z rozwiązania powiadamiania opartej opisane w innych odpowiedziach, będzie miało taki sam efekt.
+1 za sugerowanie "lotnego" ... – TheLostMind