Avatar billede Droa Seniormester
24. august 2012 - 00:51 Der er 4 kommentarer og
1 løsning

Threading af objekter

Hej eksperter.

Jeg sidder lidt og undre mig om hvis man har et class-object som er Runnable, som på samme tid kan starte sig selv.


public boolean go(){
  if(this.thread == null || !this.thread.isAlive){
    this.thread = new Thread(this);
    return true;
  }
  return false;
}


ideen var at jeg ville lave en passiv Downloader klasse, hvor man havde methoden add(String url, String localfile), hvor den tilføjede den til en kø-variabel i min klasse, og på samme tid kørte go().

dvs. hvis tråeden køre, ville den ikke starte den, hvis den er stoppet, vil den oprette Tråden, og køre instansen.

jeg går ud fra for at få den til at køre bedst, er at bruge syncronized methoder.

men spørgsmålet er mere om selve objektet kan fungere på den måde?

jeg har forsøgt mig lidt frem, ved er experimentere om data'erne er intakte, og der sker mange mysiktiske ting med ArrayList engang imellem (som jeg bruger til at lave min download-kø med.
Avatar billede arne_v Ekspert
24. august 2012 - 01:18 #1
Der er ikke noget i den viste kode som starter traaden.

Hvis du vil tilgaa en ArrayList fra flere traade skal du bruge synchronized.
Avatar billede arne_v Ekspert
24. august 2012 - 01:19 #2
Men maaske var en java.util.concurrent.ArrayBlockingQueue<E> bedre!
Avatar billede arne_v Ekspert
24. august 2012 - 01:31 #3
Eller maaske endnu bedre droppe ideen om selv at manage threads og bruge:

java.util.concurrent.ThreadPoolExecutor
Avatar billede Droa Seniormester
24. august 2012 - 02:29 #4
hov, ja der skulle lige være en this.thread.start(), som jeg havde glemt.. tak for dine råd, jeg vil starte at kigge på ThreadPoolExecutor, da ligner 100% det jeg gerne ville, også slipper man for at opfinde den dybe tallerken igen :)

ligger du et svar?
Avatar billede arne_v Ekspert
24. august 2012 - 02:32 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester