Esta é uma pesquisa de tipos sobre problemas de simultaneidade comuns em Java. Um exemplo pode ser o impasse clássico ou condição de corrida ou talvez EDT enfiando bugs no Swing. Estou interessado tanto em uma variedade de possíveis problemas, mas também em quais são os problemas mais comuns. Portanto, deixe uma resposta específica de um bug de concorrência Java por comentário e vote se você encontrar uma que encontrou.
O problema de concorrência mais comum que eu já vi, não é perceber que um campo gravado por um thread não tem a garantia de ser visto por outro thread. Uma aplicação comum disso:
class MyThread extends Thread {
private boolean stop = false;
public void run() {
while(!stop) {
doSomeWork();
}
}
public void setStop() {
this.stop = true;
}
}
Enquanto parada não é volátil , ou setStop
e run
não são sincronizados isso não é garantido que funcione. Esse erro é especialmente diabólico, já que em 99,999% não importa na prática, pois o segmento do leitor verá a mudança - mas não sabemos quanto tempo ele viu.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras