Ripcurl87 Skrevet 18. november 2011 Del Skrevet 18. november 2011 (endret) Ok, problemet er som følger. Har flere "grupper" med tråder som kjører samtidig. Når en tråd i gruppa er ferdig å kjøre så starter neste tråd. Hver tråd bruker et random antall ms for å kjøre. Hvordan kan jeg måle hver tråd i gruppa og så tilslutt legge dem sammen for å finne slutt verdien? I run()- metoden setter jeg en System.currentTimeMillis(), det samme gjør jeg når metoden er ferdig, og trekker fra den daværende currentTimeMillis. Jeg sitter da igjen med et antall ms. Hvordan kan jeg lagre disse i en ?array? i en annen klasse, for å lese den av når alle trådene er ferdig kjørte for å så summere dem tilslutt? Endret 18. november 2011 av Ripcurl87 Lenke til kommentar
Kiff Skrevet 18. november 2011 Del Skrevet 18. november 2011 Ok, problemet er som følger. Har flere "grupper" med tråder som kjører samtidig. Når en tråd i gruppa er ferdig å kjøre så starter neste tråd. Hver tråd bruker et random antall ms for å kjøre. Hvordan kan jeg måle hver tråd i gruppa og så tilslutt legge dem sammen for å finne slutt verdien? I run()- metoden setter jeg en System.currentTimeMillis(), det samme gjør jeg når metoden er ferdig, og trekker fra den daværende currentTimeMillis. Jeg sitter da igjen med et antall ms. Hvordan kan jeg lagre disse i en ?array? i en annen klasse, for å lese den av når alle trådene er ferdig kjørte for å så summere dem tilslutt? currentTimeMillis() gir vel long og ikke int. Du må bare lagre dem et sted som er felles for trådene. En mulig løsning er en singleton som holder rede på verdiene for deg. (Fort og gale, på vei ut døren), f.eks noe sånt: import java.util.ArrayList; import java.util.List; public class Counter { private static Counter instance; private final List<Long> items; private Counter() { items = new ArrayList<Long>(); } public static synchronized Counter getInstance() { if (instance == null) { instance = new Counter(); } return instance; } public synchronized void add(long l) { items.add(l); } public long totalTime() { // TODO sum list return 0L; } } Legg til verdier fortløpende med Counter.getInstance().add( ... ) Lenke til kommentar
Ripcurl87 Skrevet 18. november 2011 Forfatter Del Skrevet 18. november 2011 Aah, den fikser noe jeg ikke kom på før jeg leste mer om singleton. Nemlig problemet som kan oppstå hvis man prøver å sende 2 verdier samtidig til en Array. Skal teste den! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå