Thread

Diskutiere Thread im Java Basics - Anfänger-Themen Bereich.
A

Adriano10

In folgendem Programm werden n Threads gestartet, die unabhängig voneinander die Zahlen 1 bis 1000 ausgeben
Java:
    private final static int NUMBER = 3;

    public static void main(String[] args) {
        NumberRunner[] runner = new NumberRunner[NUMBER];
        for (int i = 0; i < NUMBER; i++) {
            runner[i] = new NumberRunner(i);
        }
        for (int i = 0; i < NUMBER; i++) {
            runner[i].start();
        }
    }

}
class NumberRunner extends Thread {

    private int number;

    public NumberRunner(int n) {
        number = n;
    }

    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("Thread " + number + ": " + i);
        }
    }
}
Ich wollte in das Programm Thread-Mechanismen einbauen, so dass die Threads nach jeweils 10 Ausgaben auf die anderen warten (Barrier), bevor sie
dann weitermachen.

Mein Quellcode sieht so aus, aber irgendwas läuft schief.

könnte jemand mir helfen ?

vielen Dank im Voraus.
Java:
public class NumberRunner extends Thread {
    private int number;
    private static int count = 0;
    private static int next = 0;
    private static Object obj = new Object();
    private static Semaphore sem = new Semaphore(1);

    public NumberRunner() {
        number = count++;
    }

    @Override
    public void run() {
while(true) {
for (int i = 0; i < 1000; i++) {
            synchronized(obj) {
            
    if(number == next) {   
                    for(int k = 0; k < 10; k++) {
                    System.out.println(getName() + ": " + i);
                    
                }
                try {
                    sleep(50);
                }catch(InterruptedException e) {
                    
                }
                next = (next + 1) % 3;
                obj.notifyAll();
            }else {
                try {
                    obj.wait();
                } catch (InterruptedException e) {   
                }
            }
        }
                
                    
    }
    }
    }
}
 
W

White_Fox

Du wirst sicher nicht mehr Antworten bekommen, wenn du den Thread mehrmals erstellst.


Ich wollte in das Programm Thread-Mechanismen einbauen, so dass die Threads nach jeweils 10 Ausgaben auf die anderen warten (Barrier), bevor sie
dann weitermachen.
Ich würde ein Programm lieber so bauen, daß jeder Thread einfach machen kann. Du gewinnst nichts wenn alle Threads etwa zur selben Zeit fertig werden, aber alle auf eine Schlafmütze warten müssen.
 
Thema: 

Thread

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben