Toon posts:

[Java] Bestanden inlezen (wait/notify)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Geachte Lezer,

Met mijn programma wil ik een lijst van bestanden inlezen. Tijdens het lezen wil ik een progressbar de voortgang van dat bestand laten zien. Dat is me gelukt na veel geklooi. Maar een nadeel van mijn oplossing (thread) is dat hij nu alle files tegelijkertijd inleest en ik dus bij 100 files 100-popupjes met progressbars krijg.

Na ongeveer heel GoT en Google News Archive te hebben doorgelezen ben ik er wel achter dat ik zoiets moet oplossen met een wait en notify. Maar ik kom er gewoon niet uit. :'(

Ik wil dus graag dat die forloop dus pas weer verdergaat als hij klaar is met 'thread'.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for ( int i = 0 ; i < strFilesDirs.length ; i ++ )
{
     String bestandsnaam = strFilesDirs[i].getAbsoluteFile().toString();
   
   // DocumentParser = Runnable 
     final DocumentParser document = new DocumentParser(bestandsnaam);
     final Thread thread = new Thread(document);
     
     // Dit heb ik gedaan om die progressbar aan de gang te krijgen
     final SwingWorker worker = new SwingWorker(){
     public Object construct()
       {
      thread.start();
      return null;
       }
     };
     worker.start();
}


Ik ben er nu al een uur of wat mee bezig en het lukt me gewoon niet. Misschien dat die SwingWorker roet in het eten gooit...

Kan iemand mij hiermee helpen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Kijk hier even naar semafoor:
http://java.sun.com/developer/Books/performance2/

En dan chapter 3. Je doet er verstandig aan om helemaal aan het begin te beginnen bij chapter 3. Ik vond het niet slecht geschreven, dus het lijkt me dat je hieraan genoeg informatie hebt om je probleem op te lossen.

[edit]
Verder is me je vraag ook iets te onduidelijk om goed antwoord op te geven.

[ Voor 75% gewijzigd door Alarmnummer op 18-12-2003 17:03 ]


Verwijderd

Topicstarter
Alarmnummer schreef op 18 december 2003 @ 16:55:
Kijk hier even naar semafoor:
http://java.sun.com/developer/Books/performance2/

En dan chapter 3. Je doet er verstandig aan om helemaal aan het begin te beginnen bij chapter 3. Ik vond het niet slecht geschreven, dus het lijkt me dat je hieraan genoeg informatie hebt om je probleem op te lossen.

[edit]
Verder is me je vraag ook iets te onduidelijk om goed antwoord op te geven.
:7 _/-\o_
Probleem opgelost met een semafoor!

Bedankt nog! Sorry dat ik dat zelf niet gezien heb maar ik heb zo veel over threads zitten lezen dat ik door de bomen het bos niet meer zag!

Voor in het archief:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Semaphore {
    protected int count;

    public Semaphore(int initCount) {
      count=initCount;
    }

    public Semaphore() { count=0; }

    public synchronized void down() throws InterruptedException {
        while (count==0) wait();
        count--;
    }

    public synchronized void up() {
        count++;
        notify();
    }
}

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Kun je niet beter die van Doug Lea pakken. Dan heb je de Semafoor die in 1.5 in Java standaard aanwezig gaat zijn [en ik geloof ook dat die werkt dmv een queue om fifo release gedrag te realiseren]

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 22-05 13:09
Is het niet een beter idee om de files NA elkaar in te lezen? Dan kan je het ook gewoon bij één popup en progressbar houden.