Salve,vorrei fare un programma in cui dei thread leggono da un file delle righe diverse per poi elaborarle. Non so come impostare l'esercizio:
precisamente non so come fare a dare in pasto un tot di righe ad ogni thread ??...![]()
Salve,vorrei fare un programma in cui dei thread leggono da un file delle righe diverse per poi elaborarle. Non so come impostare l'esercizio:
precisamente non so come fare a dare in pasto un tot di righe ad ogni thread ??...![]()
Premesso che tu conosca come funzionano i Thread e come leggere un file:Originariamente inviato da valeriAsus
Salve,vorrei fare un programma in cui dei thread leggono da un file delle righe diverse per poi elaborarle. Non so come impostare l'esercizio:
precisamente non so come fare a dare in pasto un tot di righe ad ogni thread ??...![]()
in generale, potresti definire una classe che si occupa dell'accesso al file (per intero e/o per parti), oltre alla definizione della logica del processo.
Poi, a seconda dell'implementazione, decidi se renderla thread-safe oppure no.
Ad esempio, se decidi di caricare tutto il contenuto del file in memoria (quindi accedi al file una sola volta), rendendolo read-only, non è strettamente necessario sincronizzare i vari processi, ammesso che tu non abbia particolari esigenze.
In alternativa, potresti non separare la logica di accesso al file dalla logica del processo, però devi sempre considerare possibili scenari di sincronizzazione.
Guarda non avendo molta dimistichezza sia con i thread che con i file ,non saprei fare quanto hai detto :
potresti definire una classe che si occupa dell'accesso al file (per intero e/o per parti), oltre alla definizione della logica del processo.
cioè come la dovrei impostare questa classe ?parallelizzando diciamo il lavoro, senza copiare tutto il file in memoria![]()
ps![]()
Per definire il tuo processo implementi java.lang.Runnable oppure estendi java.lang.Thread.Originariamente inviato da valeriAsus
cioè come la dovrei impostare questa classe ?parallelizzando diciamo il lavoro, senza copiare tutto il file in memoria![]()
Indipendentemente dalla scelta, devi fare l'override (ridefinire) del metodo run, nel quale vai appunto a definire la logica del tuo processo (ottenere n righe del file ed elaborarle).
Per quanto riguarda la lettura del file:
non devi per forza definire una classe a parte per accedere al file visto che, come già detto, potresti anche sviluppare tutta la logica nel metodo run. L'introduzione di tale classe andrebbe a migliorare, ad esempio, la leggibilità del tuo codice e questo non credo sia uno degli scopi del tuo esercizio.