Menu

#1 Multithreaded Example

closed-accepted
nobody
None
5
2009-05-14
2008-11-04
No

Hallo,

ich finde das Projekt wirklich nützlich und daher möchte ich auch einen Teil dazu beitragen. Mir ist aufgefallen, dass die Umwandlung wirklich einige Zeit in Anspruch nimmt. Daher habe ich mir gedacht warum nicht mehrere Dateien gleichzeitig wandeln...

Ich habe mal die Generator.java Datei so angepasst, dass die Dateien in mehreren Threads gewandelt werden. Auf älteren Rechner wird dies wohl nicht viel bringen. Auf meinem Arbeitslappi war die Zeitersparnis aber beachtlich:
164 Elemente
Version 0.7: 319 Sekunden
neue Version: 77 Sekunden!

MfG

Discussion

  • Christian Schulz

    modified Generator.java file (with 1 Producer / N Consumer Threads)

     
  • Christian Schulz

    noch eine Änderung: im Consumer Thread muss die run() Funktion wie folgt aussehen, damit der Thread zusammen mit dem Producer beendet wird.

    public void run() {
    try {
    while (producer.isDone == false) {

    if(m.p_monitor.isCanceled())
    break;

    Element e = producer.queue.poll(1, TimeUnit.SECONDS);
    if(e == null)
    continue;

    Element obj = producer.queue.take();
    int len = producer.queue.size();
    System.out.println("List size now " + len);
    process(obj);
    }
    } catch (InterruptedException ex) {
    System.out.println("CONSUMER INTERRUPTED");
    }
    }

    braucht: import java.util.concurrent.TimeUnit;

     
  • Johannes Geppert

    • status: open --> closed-accepted
     

Log in to post a comment.