Domanda

Frustrante, il sito web di HawtDispatch lo descrive come "messa in comune filo e NIO API quadro notifica degli eventi".

Prendiamo il 'pool di thread' parte prima. La maggior parte degli esecutori fornite da Java sono anche fondamentalmente pool di thread. Come è HawtDispatch diverso?

E 'anche apparentemente un "NIO evento API quadro di notifica." Sto assumendo che è uno strato sottile sopra NIO che prende i dati in entrata e passa al suo concetto di 'pool di thread,' e lo passa ad un consumatore quando lo scheduler pool di thread trova il tempo. Corretta? (Qualsiasi miglioramento rispetto NIO è accolto). Qualcuno ha fatto alcuna analisi delle prestazioni di Netty vs HD?

È stato utile?

Soluzione

HawtDispatch è progettato per essere un singolo sistema pool di thread dimensione di larghezza fissa. Fornisce strumenti 2 sapori di Java Esecutori:

  • Globale spedizione Coda: oggetti Runnable Inviato vengono eseguite contemporaneamente (si ottiene lo stesso effetto utilizzando un esecutore Executors.newFixedThreadPool(n))
  • Coda spedizione di serie: oggetti Runnable Inviato vengono eseguiti in serie (si ottiene lo stesso effetto utilizzando un esecutore Executors.newSingleThreadExecutor())

A differenza del modello esecutore java tutte le code di spedizione a livello mondiale e di serie condividono un unico pool di thread di dimensioni fisse. È possibile utilizzare migliaia di code di spedizione seriali senza aumentare il numero di thread. code di spedizione seriali possono essere usati come caselle di posta Erlang a guidare le applicazioni in stile attore reattivi.

Poiché HawtDispatch utilizza un pool di thread dimensione fissa per l'elaborazione di tutte le esecuzioni code globali e seriali, tutte le attività Runnable esegue le deve essere non-bloccante. In questo modo è simile all'architettura NodeJS tranne utilizzando più thread invece di uno solo.

In confronto a Netty, HawtDispatch non è un quadro per l'elaborazione di dati effettivamente presa. Non fornisce un quadro di come codifica / decodifica, tampone ed elaborare i dati presa. Tutto ciò che fa è eseguire un utente configurato Runnable quando i dati possono essere letti o scritti sul socket non bloccante. Sta a voi l'applicazione poi effettivamente leggere / scrivere i dati socket.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top