Sobes.tech
Junior — Middle

Με ποιους τρόπους μπορεί να υλοποιηθεί η δημιουργία ροών δεδομένων στη Java και ποιες είναι οι διαφορές τους;

sobes.tech AI

Απάντηση από AI

Στην Java, η δημιουργία ροών δεδομένων (streams) μπορεί να υλοποιηθεί με διάφορους τρόπους:

  1. Κληρονομικότητα από την κλάση Thread

    • Δημιουργείτε μια κλάση που επεκτείνει το Thread και υπερκαλύπτει τη μέθοδο run().
    • Ξεκινάτε το ρεύμα καλώντας start().
  2. Εφαρμογή της διεπαφής Runnable

    • Δημιουργείτε μια κλάση που υλοποιεί το Runnable με τη μέθοδο run().
    • Μεταβιβάζετε το αντικείμενο στον κατασκευαστή του Thread και το ξεκινάτε.
  3. Χρήση του ExecutorService

    • Επιτρέπει τη διαχείριση μιας ομάδας νημάτων.
    • Είναι χρήσιμο για κλιμακούμενες εφαρμογές.
  4. Χρήση του Callable και Future

    • Επιτρέπει την απόκτηση αποτελέσματος από το ρεύμα.

Διαφορές:

  • Η κληρονομικότητα από το Thread περιορίζει την κληρονομικότητα, καθώς η Java δεν υποστηρίζει πολλαπλή κληρονομικότητα.
  • Το Runnable είναι πιο ευέλικτο, επιτρέπει τη χρήση σύνθεσης.
  • Το ExecutorService απλοποιεί τη διαχείριση των νημάτων και τον κύκλο ζωής τους.

Παράδειγμα με Runnable:

class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Το νήμα ξεκίνησε");
    }
}

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}