Hallo,
Ik heb een klasse welke de Thread klasse extend, en berekeningen uitvoert om priemgetallen te berekenen. Deze werkt als een trein.
en een klasse welke de resultaten opslaat, en teruggeeft
en in de main void maak ik de twee threads aan zo:
Dit werkt allemaal prima, maar nu krijg ik alle resulaten dubbel? Als ik een enkele thread hebt krijg ik de resultaten wel eenmalig.
Wat doe ik fout? Aangezien de functies van de resultsReturn class synchronized en of static zijn? Deze moeten dan toch goed staan, en maar eenmalig worden verwerkt?
Ik ben nog maar net begonnen in Java, dus mischien zit ik er ook wel naast
Ik heb een klasse welke de Thread klasse extend, en berekeningen uitvoert om priemgetallen te berekenen. Deze werkt als een trein.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| class calcClass extrends Thread { public function start() { while(docalculate == true) { double nr = resultsReturn.getNr(); //pak het nieuwste nummer //Doe je berekening met de gekregen nummer //Is het priem? sla dan op if(isPrime == true) resultsReturn.save(nr); //Niewste priemgetal opslaan } } } |
en een klasse welke de resultaten opslaat, en teruggeeft
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class resultsReturn; private static double lastNr; private static double[] primes; public static synchronized double getNr() { //Haal het nummer uit de private lastNr return lastNr; } public static synchronized void save(double nr) { //Nieuwste priem opslaan primes.add(nr); //Print nieuwste prime @ scherm System.out.println(nr); } } |
en in de main void maak ik de twee threads aan zo:
Java:
1
2
3
4
5
6
7
| public static void main(String[] args) { firstThread = new calcClass(); secondThread = new calcClass(); firstThread.start(); secondThread.start(); } |
Dit werkt allemaal prima, maar nu krijg ik alle resulaten dubbel? Als ik een enkele thread hebt krijg ik de resultaten wel eenmalig.
Wat doe ik fout? Aangezien de functies van de resultsReturn class synchronized en of static zijn? Deze moeten dan toch goed staan, en maar eenmalig worden verwerkt?
Ik ben nog maar net begonnen in Java, dus mischien zit ik er ook wel naast
Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF