Gå til innhold

Hvordan lagre et visst antall ukjente verdier, lese av og summere dem senere.(fra Thread)


Anbefalte innlegg

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 av Ripcurl87
Lenke til kommentar
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...