Programm Mehrfach BufferedReader in nur einem Thread?

Dieses Thema im Forum "Programmierung" wurde erstellt von GermanUbuntu, 14. Oktober 2014.

  1. GermanUbuntu
    Online

    GermanUbuntu

    Hallo Leute,

    derzeit schreibe ich ein Programm womit die Console von mehreren Minecraft Servern, die Console vom eigentlichen Programm und die Daten vom Socket ausgelesen werden.
    Doch dabei habe ich das Problem das ich das alles nicht in einem/keinem Thread vereinen kann.
    Mein Ziel ist es alle BufferedReaders über max. 1 Thread zu lesen...

    Q: Wieso nicht eine extra Thread-Klasse und dann immer wieder denn BufferedReader des einzelnen Orangs "ansprechen"?
    A: Ganz Einfach wenn man "reader.readLine();" macht wartet der bis etwas kommt.

    Dadurch kann es Tage dauern bis die ganzen anderen Organe was "schreiben" können

    Ich weiß bissel kompliziert erklärt aber ^^
     
    #1
  2. Warum 1 Thread? Blockierende Methoden blockieren, bis diese fertig sind - So sind diese konzipiert.*

    Je nach Nutzung / Auswertung der Daten musst du ein synchronisieren. Zum Beispiel, wenn du auf die gleichen Daten zugreifen willst. Ansonsten gibt es kein großes Problem: Du musst nur auf Thread-Sicherheit achten.

    * Sie könnten auch Fehlermeldungen werfen, aber das ist für die Betrachtung des aktuellen Falles irrelevant.
     
    #2
  3. GermanUbuntu
    Online

    GermanUbuntu

    Ja das Problem ist das ich nicht 100 Threads haben möchte...
    Da das auch eine unnötige Verschwendung von Ressourcen wäre
     
    #3
  4. Wenn du n Buffered Reader hast und diese alle gleichzeitig(das Wort ist definitiv nicht ideal) lesen sollen, dann brauchst du n threads.

    Wenn die Zeit zum lesen jedoch endlich ist [sodass du prinzipiell X feste Threads hast und diese nach einander verarbeitest, dann kannst du auch Futures und FixedThreadPoolExecutores verwenden.
     
    #4
  5. GermanUbuntu
    Online

    GermanUbuntu

    Future wirkt sehr viel versprechend ;)
    Verbraucht/braucht das nicht auch mehr als 1 CPU Kern?

    Okay Problem gelöst
     
    #5