Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: "Christian H. Kuhn" Newsgroups: de.comp.lang.java Subject: Re: JUnit Test von JButton: Action wird nicht erkannt Date: Fri, 15 Jul 2016 23:09:27 +0200 Lines: 37 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net I2xftNPKOkpdHAe6/iWJ3g9uOdGdDm3RgcrexECht56TQmyMI= Cancel-Lock: sha1:ukLs3v5t+47BTLUzyechu/b6cM8= User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 In-Reply-To: Xref: csiph.com de.comp.lang.java:12996 Am 15.07.2016 um 22:04 schrieb Patrick Roemer: > Responding to Christian H. Kuhn: > interface TimeSource { > long getTimeInNanoSecs(); > } > Alternativ/zusätzlich könnte man das Design so ändern, dass der > ChessTimer nur eine Methode #checkFlag() hat, die von einem *externen* > Timer aufgerufen wird. Dann braucht man "weiter oben" natürlich wieder > eine Entität, die externen Timer und ChessTimer zusammenführt und muss > die separat testen - aber man hat die Verantwortlichkeiten getrennt und > die "Problemfläche" für Threading reduziert. Der Gedanke kam mir auch schon. Die Kernfunktionalität von QChessTimer ist einfach das unterbrechbare Runterzählen und Ausliefern der Zeit. Ob die Null erreicht ist, kann auch QChessClock prüfen. Man kann auch argumentieren, dass das semantisch besser ist. > Es ist völlig egal, welche Frequenz die Aufrufe in den einzelnen Threads > haben. Solange es keine "happens-before"-Beziehung zwischen Aktion A in > Thread 1 und Aktion B in Thread 2 gibt, hast Du keinerlei Garantie, dass > Thread 2 die Resultate von Aktion A je sehen wird, egal, wieviel > Realzeit zwischen den Aktionen liegt. Ja. Das ist die Theorie. Schreib-Lese-Konflikte. In dem Fall allerdings nicht praktisch relevant. Das Blockadepotential der Anwendung ist eine Größenordnung kleiner als die Wahrnehmung der Spieler. Und wenn externe Blockaden auftreten, bleibt sowieso irgendwas unzumutbar stehen. Weil es mir aber weniger darum geht, eine funktionierende Schachuhr zu schreiben, als das Problem theoretisch zu verstehen und gewissermaßen optimal zu lösen, kümmere ich mich natürlich auch um solche Konflikte. lg QNo