Threads Threads bestimmte Aufgaben zuweisen...

aquarium1974

Aktives Mitglied
Hallo Leute,

ich wollte was mit Threads machen, weiß aber nicht wie...
Folgendes habe ich gebaut:
- eine Datei erzeugt mit 100 Zahlen, von 0 bis 100


Ich will daß 1 Methode diese Datei zeilenweise ausliest und jeweils die aktuelle Zeile an einen Thread weitergibt und dann einfach so lange wartet.
Also:

Code:
1 Thread wartet 1 Sekunde und nimmt dann die nächste Zeile
2 Thread wartet 2 Sekunde und nimmt dann die nächste Zeile
3 Thread wartet 3 Sekunde und nimmt dann die nächste Zeile
4 Thread wartet 4 Sekunde und nimmt dann die nächste Zeile
5 Thread wartet 5 Sekunde und nimmt dann die nächste Zeile
6 Thread wartet 6 Sekunde und nimmt dann die nächste Zeile
7 Thread wartet 7 Sekunde und nimmt dann die nächste Zeile
8 Thread wartet 8 Sekunde und nimmt dann die nächste Zeile
9 Thread wartet 9 Sekunde und nimmt dann die nächste Zeile
10 Thread wartet 10 Sekunde und nimmt dann die nächste Zeile

Insgesamt sollen 3 Threads das dann abarbeiten. Statt des Wartens könnte das ja auch eine komplexe Rechenoperation sein.
Ich weiß aber nicht wie ich das machen soll.

Ich brauche daß für nichts konkretes, wollte einfach nur mit Threads bischen rumfummeln.

Das habe ich bisher gebaut:

Java:
package thread;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Main {
   static Counter c1;
   static Thread t1;

   public static void main(String[] args) {
     Counter c2 = new Counter(2);
     c1 = new Counter(1);
     t1 = new Thread(c1);
     Counter c3 = new Counter(3);

     Thread t2 = new Thread(c2);
     Thread t3 = new Thread(c3);
//     t1.start();
//     t2.start();
//     t3.start();
     auslesen();
   }

   public static int auslesen() {
     int delay = 0;
     try {
       File f = new File("c://temp/output.txt");
       FileReader fr = new FileReader(f);
       BufferedReader br = new BufferedReader(fr);
       String zeile;
    
       while ((zeile = br.readLine()) != null) {
         System.out.println(Integer.parseInt(zeile));
      
       }

     } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
     return delay;

   }

}

package thread;

public class Counter implements Runnable {
   int nummer;
   int delay;

   public Counter(int nummer) {
     this.nummer = nummer;
   }

   @Override
   public void run() {
     System.out.println("Warte für " + delay + "  Sekunden!");

   }

}
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Ich würde das mit neuer API lösen und nichts mehr mit Threads. Vereinfacht:
Java:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Test {
	
	public static void main(String... args) {
		ExecutorService exec = Executors.newFixedThreadPool(3);
		for (int i = 0; i < 20; i++) {
			int n = i;
			exec.execute(() -> {
				try {
					System.out.println(Thread.currentThread().getName() + ": Attempt to sleep: " + n + " seconds.");
					TimeUnit.SECONDS.sleep(n);
				} catch (Exception e) {
					e.printStackTrace();
				}
			});
		}
		exec.shutdown();
	}
}
 

aquarium1974

Aktives Mitglied
Danke erst mal...
Siehe Kommentar unten im Code.
Kann ich das mit Java7 kompilieren?
Was soll denn der Pfeil im Code?

Mein JDK 1.7 schmeißt einen Compile-Fehler... :-(

Ich würde das mit neuer API lösen und nichts mehr mit Threads. Vereinfacht:
Java:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Test {
  
    public static void main(String... args) {
        ExecutorService exec = Executors.newFixedThreadPool(3);
        for (int i = 0; i < 20; i++) {
            int n = i;
            exec.execute(() [B]->[/B] { //was soll denn der Pfeil hier? Kann ich das mit Java7 kompilieren?
                try {
                    System.out.println(Thread.currentThread().getName() + ": Attempt to sleep: " + n + " seconds.");
                    TimeUnit.SECONDS.sleep(n);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        }
        exec.shutdown();
    }
}
 

Flown

Administrator
Mitarbeiter
Ist auch ein Java 8 Programm. Warum immer an so alten Java Versionen hängen bleiben?

Mit Compliance Java 7:
Java:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class Test {
	
	public static void main(String... args) {
		ExecutorService exec = Executors.newFixedThreadPool(3);
		for (int i = 0; i < 20; i++) {
			final int n = i;
			exec.execute(new Runnable() {
				@Override
				public void run() {
					try {
						System.out.println(Thread.currentThread().getName() + ": Attempt to sleep: " + n + " seconds.");
						TimeUnit.SECONDS.sleep(n);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			});
		}
		exec.shutdown();
	}
}

PS: Das mit den Pfeil ist ein Lambda Ausdruck!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Threads Anfänger Java Basics - Anfänger-Themen 17
1 Threads parallel laufen Java Basics - Anfänger-Themen 11
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
M Threads Java Basics - Anfänger-Themen 12
L Threads Synchronisierung zwischen threads Java Basics - Anfänger-Themen 4
M Threads Java Basics - Anfänger-Themen 2
A Threads Java Basics - Anfänger-Themen 9
A Threads Java Basics - Anfänger-Themen 13
A Threads und .join Java Basics - Anfänger-Themen 14
W Threads starten Java Basics - Anfänger-Themen 2
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
J Wieviele threads? Java Basics - Anfänger-Themen 9
J Problem bei seriellem Start von Threads Java Basics - Anfänger-Themen 11
O Threads Java Basics - Anfänger-Themen 2
L Buchungssystem und Threads Java Basics - Anfänger-Themen 2
O Threads - Synchronize(), join(), wait(), notify(), yield() Java Basics - Anfänger-Themen 6
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
A Kommunikation zwischen nebenläufigen Threads Java Basics - Anfänger-Themen 4
S Gemeinsame Ressource und Mehrfachinstanziierung von Threads Java Basics - Anfänger-Themen 16
S Verklemmung Threads Java Basics - Anfänger-Themen 11
B Threads 2 Threads gleichzeitig laufen lassen Java Basics - Anfänger-Themen 1
M Threads Threads laufen sequenziell, statt gleichzeitig. Java Basics - Anfänger-Themen 9
M Threads run Methode Java Basics - Anfänger-Themen 4
javajoshi mehrere Threads: Methoden zentral unterbringen Java Basics - Anfänger-Themen 8
javajoshi Problem mit zwei Threads und Arrays (Runnable) Java Basics - Anfänger-Themen 12
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
S Kleine Frage zu Threads Java Basics - Anfänger-Themen 3
M Mit 2 Threads eine Zahl hochzählen Java Basics - Anfänger-Themen 13
T Threads Synchronisieren Java Basics - Anfänger-Themen 6
D Frage Threads Java Basics - Anfänger-Themen 6
Z Threads Executor Framework - Aufgabe auf n Threads aufteilen Java Basics - Anfänger-Themen 10
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
kilopack15 Mehrere Threads in einer Klasse Java Basics - Anfänger-Themen 8
H Threads funktionieren nicht Java Basics - Anfänger-Themen 4
J Aufgabe(Threads) richtig verstanden/implementiert Java Basics - Anfänger-Themen 27
R Threads aufeinander warten lassen? Java Basics - Anfänger-Themen 10
T Threads Durch threads gestartete Prozesse killen Java Basics - Anfänger-Themen 2
J Threads Java Basics - Anfänger-Themen 38
D Alte Klausuraufgabe Threads Java Basics - Anfänger-Themen 10
R Threads in JavaFX Java Basics - Anfänger-Themen 3
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
F Sicheres Zurückmelden aus Threads Java Basics - Anfänger-Themen 0
S Threads zum Thema Threads??? null Ahnung Java Basics - Anfänger-Themen 4
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
J ConcurrentCalculation Multi Threads in Java Java Basics - Anfänger-Themen 3
P Threads Trotz Threads wird nur 1 Prozessorkern ausgelastet Java Basics - Anfänger-Themen 7
M "restartable" threads Java Basics - Anfänger-Themen 11
M Threads - summieren Java Basics - Anfänger-Themen 13
W Klassen Variable einer anderen Klasse ändern (Threads) Java Basics - Anfänger-Themen 3
E Threads - Programm analysieren Java Basics - Anfänger-Themen 2
E join() bei zwei Threads Java Basics - Anfänger-Themen 2
T Threads Threads richtig synchronisieren Java Basics - Anfänger-Themen 3
D [Concurrency/Threads] Code Umsetzung Schriftlich Java Basics - Anfänger-Themen 2
D Threads Java Basics - Anfänger-Themen 4
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
N Verweise auf Variablen in verschiedenen Threads Java Basics - Anfänger-Themen 4
T Java-Threads Java Basics - Anfänger-Themen 0
G Moving Objects with Threads (implements Runnable) Java Basics - Anfänger-Themen 1
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
M Problem mit Threads Java Basics - Anfänger-Themen 11
M Threads - wo gehören sie hin? Java Basics - Anfänger-Themen 3
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
J Threads Java Basics - Anfänger-Themen 3
F ExecutorService und offene Threads Java Basics - Anfänger-Themen 3
P Threads Threads nicht nebenläufig Java Basics - Anfänger-Themen 7
M Threads nicht nebenleblaufig Java Basics - Anfänger-Themen 2
B Threads parallel zur main Java Basics - Anfänger-Themen 3
M Threads Java Basics - Anfänger-Themen 2
M Threads, zwei methoden gleichzeitig laufen lassen Java Basics - Anfänger-Themen 4
M Threads und Methodenübergreifender Variablezugriff Java Basics - Anfänger-Themen 2
J Wie handle ich Threads am besten? Java Basics - Anfänger-Themen 2
H Threads Java Basics - Anfänger-Themen 10
B synchronized threads Java Basics - Anfänger-Themen 17
E Mehrmaliges Ausführen eines Threads Java Basics - Anfänger-Themen 5
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
T Alle Threads .notify() Java Basics - Anfänger-Themen 13
R Threads Verständnisschwierigkeit Java Basics - Anfänger-Themen 2
J Können mehere Threads parallel eine Datei lesen? Java Basics - Anfänger-Themen 4
G Methoden in Threads wandeln Java Basics - Anfänger-Themen 7
H Threads Java Basics - Anfänger-Themen 17
F Java Concurrency - Threads Java Basics - Anfänger-Themen 4
V Threads Threads synchronisieren Java Basics - Anfänger-Themen 4
T Threads Join() = Block? oO Java Basics - Anfänger-Themen 4
J Threads ArrayList Problem bei Threads Java Basics - Anfänger-Themen 3
C Objekte durchschleifen / Threads Java Basics - Anfänger-Themen 2
J Threads stoppen mit interrupt - Frage dazu Java Basics - Anfänger-Themen 7
N Pingen in Threads Java Basics - Anfänger-Themen 9
B Threads benutzen Java Basics - Anfänger-Themen 5
E Allgemein Verständnissfrage zum Ablauf mehrerer Threads Java Basics - Anfänger-Themen 4
S Threads erzeugen Java Basics - Anfänger-Themen 11
K Threads Nur 2 von 3 Threads funktionieren Java Basics - Anfänger-Themen 8
P Threads Methode von Threads erledigen lassen Java Basics - Anfänger-Themen 11
M Threads am Beispiel Parkhaus Java Basics - Anfänger-Themen 10
Z Threads, Server, GUI Java Basics - Anfänger-Themen 4
M Threads bestimmten Kernen zuweisen? Java Basics - Anfänger-Themen 7
M Threads vs fork/join Java Basics - Anfänger-Themen 2
A Threads sequenziell ausführen Java Basics - Anfänger-Themen 5
H Auf Threads warten Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben