Thread

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

Adriano10

Aufgabe sieh so aus:
Schreiben Sie ein Programm, das ein gegebenes int-Array daraufhin untersucht, ob im Array ein bestimmter int-Wert enthalten ist. Die Arbeit sollen sich dabei zwei Threads teilen: Ein Thread durchsucht den linken Teil und ein zweiter den rechten Teil. Beide Threads sollen die Ergebnisse dem Benutzer kundtun.

Ich wollte gern wissen, ob ich alles richtig gemacht habe, oder welchen Fehler soll ich beheben.
Java:
public class ArrayThread {

    public static void main(String[] args) throws InterruptedException {

        int[] Array = { 2, 7, 3, 9, 23 };
        int eingabe = 9;

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < Array.length / 2; i++) {
                    if (eingabe == Array[i]) {
                        System.out.println(Thread.currentThread().getName() + ": " + Array[i]);
                    }
                }
            }

        });

        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = Array.length - 1; i > Array.length / 2; i--) {
                    if (eingabe == Array[i]) {
                        System.out.println(Thread.currentThread().getName() + ": " + Array[i]);
                    }
                }
            }

        });

        thread.start();
        thread1.start();

        thread.join();
        thread1.join();

    }

}
 
MoxxiManagarm

MoxxiManagarm

Ich wollte gern wissen, ob ich alles richtig gemacht habe, oder welchen Fehler soll ich beheben.
Sei ruhig Selbstbewusst mit deinem Code, wenn er funktioniert. Das tut er doch, naja zumindest fast. Ändere mal deinen Input in

Java:
int[] Array = { 2, 7,  9, 3, 23 };
int eingabe = 9;
Denke erst selbst darüber nach warum das nicht funktioniert. Bitte schaue den Grund nur nach, wenn du nicht selbst darauf kommst.
Eine der beiden Schleifen musst bis inklusive Array.length/2 laufen

Darüber hinaus habe ich ein paar grundsätzliche Anmerkungen:
- thread und thread1 sind komische Benennungen. Kannst du nicht, wenn du Zahlen verwendest, zumindest thread1+thread2 schreiben?
- "Array" ist einer der ungünstigsten Benennungen, die ein Array haben kann. Bitte nimm zumindest lowercase "array"
- Runnable ist ein Interface mit einer Methode, das könntest du als Lamba deutlich kürzer schreiben
- Beide Threads sind Code Duplication. Letztlich unterscheiden sie sich nur in start und Ende. Du könntest überlegen das entsprechend zu verlagern.
 
A

Adriano10

Sei ruhig Selbstbewusst mit deinem Code, wenn er funktioniert. Das tut er doch, naja zumindest fast. Ändere mal deinen Input in

Java:
int[] Array = { 2, 7,  9, 3, 23 };
int eingabe = 9;
Denke erst selbst darüber nach warum das nicht funktioniert. Bitte schaue den Grund nur nach, wenn du nicht selbst darauf kommst.
Eine der beiden Schleifen musst bis inklusive Array.length/2 laufen

Darüber hinaus habe ich ein paar grundsätzliche Anmerkungen:
- thread und thread1 sind komische Benennungen. Kannst du nicht, wenn du Zahlen verwendest, zumindest thread1+thread2 schreiben?
- "Array" ist einer der ungünstigsten Benennungen, die ein Array haben kann. Bitte nimm zumindest lowercase "array"
- Runnable ist ein Interface mit einer Methode, das könntest du als Lamba deutlich kürzer schreiben
- Beide Threads sind Code Duplication. Letztlich unterscheiden sie sich nur in start und Ende. Du könntest überlegen das entsprechend zu verlagern.
Danke für die Anmerkungen, sie werde ich in Betracht ziehen.

ich hab mir Gedanken darüber gemacht, aber komme ich leider nicht drauf, warum sie nicht funktioniert. Wenn Sie mich aufklären würden, wäre ich sehr dankbar.
 
Thema: 

Thread

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben