folgende situation:
Sudoku.java
Main.java:
so, wie programmiere ich das ganze in threads??
ich habe gedacht, ich lasse Sudoku.java von Thread erben, schreibe alles was in fill() steht (der code in der fill()-methode kann unter umständen sehr lange zum ausführen brauchen) in die run()-methode und rufe dann in Main.java
auf. geht aber nicht. die ganze gui (swing) bleibt hängen, also funktioniert irgendwas mit dem thread nicht richtig...
Sudoku.java
Code:
public class Sudoku extends Thread {
public void init() {
// Vorbelegung aller Felder mit Nullen
// Markiere für alle Felder alle ZufallsZahlen als "nicht versucht"
}
public void fill() {
// Suche das erste Feld mit Wert Null
// Fertig, falls kein freies Feld mehr gefunden wurde
// Suche für dieses Feld eine Zufallszahl, die noch nicht versucht
// wurde
// und die keine doppelten Einträge erzeugt
// Falls passende ZufallsZahl gefunden wurde, schreibe diese in das
// Feld
// Falls nicht, backtrack
}
public boolean doppelt(int row, int col, int ZufallsZahl) {
// Doppelte Einträge in Reihe?
// Doppelte Einträge in Spalte?
// Bestimme linke obere Ecke der Region
// Doppelte Einträge in Region?
}
public boolean zahlenUebrig(int row, int col) {
}
public void backtrack(int row, int col) {
// Markiere für das aktuelle Feld alle Zufallszahlen als "nicht
// versucht"
// Setze das vorige Feld auf Null zurück
}
public int[][] getSudoku() {
return Sudoku;
}
}
Main.java:
Code:
[...]
public void fuelleSpielfeld(int level) {
sudoku.init();
sudoku.fill();
//fülle alle Zahlen in alle Felder
}
so, wie programmiere ich das ganze in threads??
ich habe gedacht, ich lasse Sudoku.java von Thread erben, schreibe alles was in fill() steht (der code in der fill()-methode kann unter umständen sehr lange zum ausführen brauchen) in die run()-methode und rufe dann in Main.java
Code:
Sudoku sudoku = new Sudoku();
sudoku.init()
sudoku.start();
auf. geht aber nicht. die ganze gui (swing) bleibt hängen, also funktioniert irgendwas mit dem thread nicht richtig...