Threads

MossMan_AT

Mitglied
Hallo,
Ich habe ein Problem mit Threads, welches sich im unteren Code zeigt. Aufgabe ist es in zwei Panels eine Ampelanlage zu zeichnen, wobei die beiden Ampeln synchron laufen müssen. Dies soll mit den Buttons Start, Stopp und Ende realisiert werden. Soweit funktioniert es, aber nicht ganz so wie ich es möchte, denn ich möchte zwei Threads erstellen, die in der main-Methode ihre run-Methode haben bzw. finden sollen. Dies mache ich mit t = new Thread(this); wobei die Definition zuvor durchgeführt wurde. Dann versuche ich herauszufinden, ob sie erstellt wurden- mit if(t.isAlive()) etc. ... um sicherzustellen, dass sie existieren, aber das tun sie nicht. Hoffe, dass unten im Code alles klar ist. Wenn ich sie erstelle und im Konstruktor ein Panel angebe, dann existieren sie, andernfalls nicht.

Vielen Dank!

Mit freundlichen Grüßen!

Das ist das Panel:
Java:
import java.awt.Color;

import java.awt.Graphics;
import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JPanel;

public class JAmpelPanel extends JPanel implements Runnable{
    enum Phase {ROT, ROTGELB, GRUEN, GELB, AUS};    //ENUM definiert eine Klasse genauer, der Konstanten übergeben werden- hier die Farben
    private Phase phase = Phase.AUS;    //Ein Objekt der Klasse Phase wird erstellt
    Color coben, cmitte, cunten;
    
    //Ampelphasen:
        private int rotPhase = 3000;
        private int rotgelbPhase = 500;
        private int gruenPhase = 3000;
        private int gelbPhase = 3000;
        
    //Variable:
        private boolean go;
        private boolean f;
    
    //Die paint-Methode:
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        setBackground(new Color(0, 80, 0));
        
        switch(phase)
        {
            case ROT:
                coben = Color.red;
                cmitte = Color.gray;
                cunten = Color.gray;
                break;
                
            case ROTGELB:
                coben = Color.red;
                cmitte = Color.orange;
                cunten = Color.gray;
                break;
                
            case GRUEN:
                coben = Color.gray;
                cmitte = Color.gray;
                cunten = Color.green;
                break;
                
            case GELB:
                coben = Color.gray;
                cmitte = Color.orange;
                cunten = Color.gray;
                break;
        
            case AUS:
                coben = Color.gray;
                cmitte = Color.gray;
                cunten = Color.gray;
                break;
        }
        int h = getHeight() / 3-12;
        int b = getWidth() - 6;
        
        g.setColor(coben);
        g.fillOval(3,  3,  b,  h);
        
        g.setColor(cmitte);
        g.fillOval(3,  getHeight() / 3 + 6, b, h);
        
        g.setColor(cunten);
        g.fillOval(3,  2 * getHeight() / 3 + 9,  b,  h);
        
        g.setColor(Color.black);
        g.drawOval(3,  3,  b,  h);
        g.drawOval(3,  getHeight() / 3+ 6, b, h);
        g.drawOval(3, 2 * getHeight() / 3 + 9, b, h);
    }
    
    public void setPhase(Phase p)
    {
        phase = p;
        repaint();
    }
    
    public void setAus()
    {
        setPhase(Phase.AUS);
        repaint();
    }
    
    public void setRot()
    {
        setPhase(Phase.ROT);
        repaint();
    }
    
    public void setRotgelb()
    {
        setPhase(Phase.ROTGELB);
        repaint();
    }
    
    public void setGelb()
    {
        setPhase(Phase.GELB);
        repaint();
    }
    
    public void setGruen()
    {
        setPhase(Phase.GRUEN);
        repaint();
    }

    
    @Override
    public synchronized void run() {
        
    while(go == true)
    {
            
        try
        {
            setRot();
            Thread.sleep(rotPhase);
        
            setRotgelb();
            Thread.sleep(rotgelbPhase);
        
            setGruen();
            Thread.sleep(gruenPhase);
        
            setGelb();
            Thread.sleep(gelbPhase);
        }
        
        catch(Exception e1)
        {
            e1.printStackTrace();
        }
        
    }   
    
    }
    
    
    public void setGo(boolean f)
    {
        go = f;
    }
}

Nun folgt die main-Methode:
Java:
import java.awt.BorderLayout;


import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class DuoAmpel extends JFrame implements Runnable{

    //ContentPane:
    private JPanel contentPane;
    
    //Threads:
    private Thread t;
    private Thread d;
    
    //Panels:
    private JAmpelPanel panelAmpelOne;
    private JAmpelPanel panelAmpelTwo;
    
    //Buttons:
    private JButton btnStop;
    private JButton btnStart;
    private JButton btnEnde;
    
    //Ampelphasen:
    private int rotPhase = 3000;
    private int rotgelbPhase = 500;
    private int gruenPhase = 3000;
    private int gelbPhase = 3000;
    

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    DuoAmpel frame = new DuoAmpel();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public DuoAmpel() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        //Title:
        setTitle("Zweiampelsteuerung");
        
        //Panels:
        panelAmpelOne = new JAmpelPanel();
        panelAmpelOne.setBounds(10, 11, 134, 239);
        contentPane.add(panelAmpelOne);
        
        panelAmpelTwo = new JAmpelPanel();
        panelAmpelTwo.setBounds(154, 11, 134, 239);
        contentPane.add(panelAmpelTwo);
        
        //Buttons:
        btnStart = new JButton("Start");
        btnStart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //Wird so in der derzeitigen Fassung verwendet:
                var f = true;
                panelAmpelOne.setGo(f);
                t = new Thread(panelAmpelOne);
                t.start();
                
                //Sollte eigentlich über den Aufruf der Methode funktionieren- tut es aber nicht:
                // Das ist die Methode- findet sich weiter unten: automatik();
                
                //Problem mit Konstruktor, wird nicht erstellt, es wird kein Thread erstellt, wenn ich d = new Thread(this); schreibe:
                panelAmpelTwo.setGo(f);
                d = new Thread(panelAmpelTwo);
                /*if(d.isAlive())
                {
                    System.out.println("d Wurde erstellt");
                }*/
                d.start();
            }
        });
        btnStart.setBounds(302, 11, 89, 23);
        contentPane.add(btnStart);
        
        btnStop = new JButton("Stopp");
        btnStop.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //btnStart.setSelected(false);
                
                var n = false;
                panelAmpelOne.setGo(n);
                panelAmpelTwo.setGo(n);
                
            }
        });
        btnStop.setBounds(302, 45, 89, 23);
        contentPane.add(btnStop);
        
        btnEnde = new JButton("Ende");
        btnEnde.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        btnEnde.setBounds(302, 79, 89, 23);
        contentPane.add(btnEnde);
    }

    
    private void automatik()
    {
        System.out.println("Erfolgreicher Aufruf der Funktion!");
        
        //Problem mit Konstruktor, Thread wird nicht erstellt:
        t = new Thread(this);
        t.start();
        
        /*if(t.isAlive())
        {
            t.start();
        }
        else
        {
            System.out.println("t Wurde nicht erstellt");
        }*/
        
        //Problem mit Konstruktor, Thread wird nicht erstellt:
        d = new Thread(this);
        d.start();
        
        /*if(d.isAlive())
        {
        d.start();
        }
        else
        {
            System.out.println("d Wurde nicht erstellt");
        }*/
        
    
        
        
        
    
        
    }
    
    
    @Override
    public synchronized void run() {
        
        
    while(btnStart.isSelected())
    {
    
    
        try
        {
                /*btnStart.repaint();
                btnStop.repaint();
                btnEnde.repaint();*/
            
                panelAmpelTwo.setRot();
                Thread.sleep(rotPhase);
        
                panelAmpelTwo.setRotgelb();
                Thread.sleep(rotgelbPhase);
        
                panelAmpelTwo.setGruen();
                Thread.sleep(gruenPhase);
        
                panelAmpelTwo.setGelb();
                Thread.sleep(gelbPhase);
        }
    
        catch(Exception e)
        {
            e.printStackTrace();
        }   
    }
    }
    
    
}
 

Blender3D

Top Contributor
Ich habe ein Problem mit Threads, welches sich im unteren Code zeigt.
Ich habe Deinen Code etwas verkürzt.

Java:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class JAmpelPanel extends JPanel implements Runnable {
    enum Phase {
        ROT, ROTGELB, GRUEN, GELB, AUS
    }; // ENUM definiert eine Klasse genauer, der Konstanten übergeben werden- hier die
        // Farben

    private Phase phase = Phase.AUS; // Ein Objekt der Klasse Phase wird erstellt
    Color coben, cmitte, cunten;

    // Variable:
    private boolean running = false;
    private Thread thread;

    // Die paint-Methode:
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        setBackground(new Color(0, 80, 0));

        switch (phase) {
        case ROT:
            coben = Color.red;
            cmitte = Color.gray;
            cunten = Color.gray;
            break;
        case ROTGELB:
            coben = Color.red;
            cmitte = Color.orange;
            cunten = Color.gray;
            break;
        case GRUEN:
            coben = Color.gray;
            cmitte = Color.gray;
            cunten = Color.green;
            break;
        case GELB:
            coben = Color.gray;
            cmitte = Color.orange;
            cunten = Color.gray;
            break;
        case AUS:
            coben = Color.gray;
            cmitte = Color.gray;
            cunten = Color.gray;
            break;
        }
        int height = getHeight() / 3 - 12;
        int width = getWidth() - 6;

        drawLight(g, 3, height, width, coben);
        drawLight(g, getHeight() / 3 + 6, height, width, cmitte);

        g.setColor(cunten);
        g.fillOval(3, 2 * getHeight() / 3 + 9, width, height);

        g.setColor(Color.black);
        g.drawOval(3, 3, width, height);
        g.drawOval(3, getHeight() / 3 + 6, width, height);
        g.drawOval(3, 2 * getHeight() / 3 + 9, width, height);
    }

    private void drawLight(Graphics g, int y, int height, int width, Color color) {
        g.setColor(color);
        g.fillOval(3, y, width, height);
    }

    private void setPhase(Phase p) {
        phase = p;
        repaint();
    }

    public void setAus() {
        setPhase(Phase.AUS);
        repaint();
    }

    @Override
    public synchronized void run() {
        while (running == true) {
            try {
                nextPhase(Phase.ROT, 3000);
                nextPhase(Phase.ROTGELB, 500);
                nextPhase(Phase.GELB, 3000);
                nextPhase(Phase.GRUEN, 3000);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }

    private void nextPhase(Phase phase, long delay) throws InterruptedException {
        if (!running)
            return;
        setPhase(phase);
        Thread.sleep(delay);
    }

    public void start() {
        stop();
        running = true;
        thread = new Thread(this);
        thread.start();
    }

    public void stop() {
        running = false;
        thread = null;
    }
}
Java:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

@SuppressWarnings("serial")
public class DuoAmpel extends JFrame {

    // ContentPane:
    private JPanel contentPane;

    // Panels:
    private JAmpelPanel panelAmpelOne;
    private JAmpelPanel panelAmpelTwo;

    // Buttons:
    private JButton btnStop;
    private JButton btnStart;
    private JButton btnEnde;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    DuoAmpel frame = new DuoAmpel();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public DuoAmpel() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        // Title:
        setTitle("Zweiampelsteuerung");

        // Panels:
        panelAmpelOne = new JAmpelPanel();
        panelAmpelOne.setBounds(10, 11, 134, 239);
        contentPane.add(panelAmpelOne);

        panelAmpelTwo = new JAmpelPanel();
        panelAmpelTwo.setBounds(154, 11, 134, 239);
        contentPane.add(panelAmpelTwo);

        // Buttons:
        btnStart = new JButton("Start");
        btnStart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panelAmpelOne.start();
                panelAmpelTwo.start();
            }
        });
        btnStart.setBounds(302, 11, 89, 23);
        contentPane.add(btnStart);

        btnStop = new JButton("Stopp");
        btnStop.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panelAmpelOne.stop();
                panelAmpelTwo.stop();
            }
        });
        btnStop.setBounds(302, 45, 89, 23);
        contentPane.add(btnStop);

        btnEnde = new JButton("Ende");
        btnEnde.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        btnEnde.setBounds(302, 79, 89, 23);
        contentPane.add(btnEnde);
    }

}
 

mrBrown

Super-Moderator
Mitarbeiter
Ich habe ein Problem mit Threads, welches sich im unteren Code zeigt. Aufgabe ist es in zwei Panels eine Ampelanlage zu zeichnen, wobei die beiden Ampeln synchron laufen müssen. Dies soll mit den Buttons Start, Stopp und Ende realisiert werden. Soweit funktioniert es, aber nicht ganz so wie ich es möchte, denn ich möchte zwei Threads erstellen, die in der main-Methode ihre run-Methode haben bzw. finden sollen.
Sollen die zwei Ampeln synchron laufen, also Ampel 1 schaltet um und gleichzeitig schaltet Ampel 2 auch um, oder sollen sie einfach nur gleichzeitig laufen, aber wenn ob die gleichzeitig schalten ist egal?
 

Blender3D

Top Contributor
Sie laufen synchron, aber danke, es hat mittlerweile schon funktioniert!
Da die Threads hintereinander gestartet werden und die Sleeping Phasen identisch sind entsteht der Anschein, dass die Ampeln synchron laufen. Das machen sie aber nicht wirklich.
Um sie zu synchronisieren, könnten man eine Ampel Serverklasse implementieren, die Ampeln steuert.
 
B

BestGoalkeeper

Gast
Ich denke auch dass Synchronisierung hier quasi nicht erwünscht ist... Denn wenn die Ampeln wirklich gleichzeitig schalten würden, dann würde ja gar kein Problem auftreten.
 
B

BestGoalkeeper

Gast
eben, die zeitliche Abfolge bei Ampeln ist ja fest vorgegeben... oder anders, ich sehe keinen Grund, warum eine "Instanz" nicht alle Ampeln einer Kreuzung steuern sollte.
 

mrBrown

Super-Moderator
Mitarbeiter
Entweder eine zentrale Stelle schaltet immer alle Ampeln gleichzeitig oder die Ampeln "warte" aufeinander, zB mit CyclicBarrier.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
C Threads und Swing Java Basics - Anfänger-Themen 9
berserkerdq2 Wo finde ich in der Java Api die Notation zu Threads bezüglich Synchronized? Java Basics - Anfänger-Themen 14
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
B Monitor als Schranke von Threads Java Basics - Anfänger-Themen 20
W Threads Alphabet Java Basics - Anfänger-Themen 20
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
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
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
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
G 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

Ähnliche Java Themen

Neue Themen


Oben