ExecutorService è un oggetto Java contenente il pool gestito di thread e in grado di pianificare le attività inoltrate per questi thread. Le strategie di pianificazione variano in più implementazioni disponibili.
Ho bisogno di eseguire un numero di compiti 4 alla volta, qualcosa del genere: ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } //...wait for completion somehow Come posso ricevere una notifica una volta completati? Per ora non riesco a pensare a niente di meglio che impostare un contatore di …
Ho un codice in cui pianifico un'attività usando java.util.Timer. Mi guardavo intorno e ho visto che ExecutorServicepoteva fare lo stesso. Quindi questa domanda qui, hai usato Timere ExecutorServiceper pianificare le attività, qual è il vantaggio di uno che utilizza su un altro? Volevo anche verificare se qualcuno avesse usato la …
Diciamo che ho un'applicazione che utilizza il Executorframework in quanto tale Executors.newSingleThreadExecutor().submit(new Runnable(){ @Override public void run(){ // do stuff } } Quando eseguo l'applicazione nel debugger, un thread viene creato con il seguente (default) nome: Thread[pool-1-thread-1]. Come puoi vedere, questo non è tremendamente utile e, per quanto ne so, …
Sto cercando di utilizzare la ThreadPoolExecutorclasse Java per eseguire un gran numero di attività pesanti con un numero fisso di thread. Ognuna delle attività ha molti luoghi durante i quali potrebbe fallire a causa di eccezioni. Ho eseguito la sottoclasse ThreadPoolExecutore ho ignorato il afterExecutemetodo che dovrebbe fornire eventuali eccezioni …
Qual è il modo più semplice di attendere il completamento di tutte le attività ExecutorService? La mia attività è principalmente computazionale, quindi voglio solo eseguire un gran numero di lavori, uno su ciascun core. In questo momento la mia configurazione è simile al seguente: ExecutorService es = Executors.newFixedThreadPool(2); for (DataTable …
Come devo scegliere tra l' invio o l' esecuzione di ExecutorService , se il valore restituito non è la mia preoccupazione? Se provo entrambi, non vedo differenze tra i due tranne il valore restituito. ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); threadExecutor.execute(new Task()); ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); threadExecutor.submit(new Task());
newCachedThreadPool() contro newFixedThreadPool() Quando dovrei usare l'uno o l'altro? Quale strategia è migliore in termini di utilizzo delle risorse?
Ho un pool di thread fisso a cui invio le attività (limitato a 5 thread). Come posso scoprire quale di quei 5 thread esegue il mio compito (qualcosa come "thread n. 3 di 5 sta facendo questo compito")? ExecutorService taskExecutor = Executors.newFixedThreadPool(5); //in infinite loop: taskExecutor.execute(new MyTask()); .... private class …
Sembra impossibile creare un pool di thread nella cache con un limite al numero di thread che può creare. Ecco come viene implementato Executors.newCachedThreadPool statico nella libreria Java standard: public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); } Quindi, usando quel modello per continuare a …
Ho un programma che genera thread (~ 5-150) che eseguono una serie di attività. Inizialmente, ho usato un FixedThreadPoolperché questa domanda simile suggeriva che fossero più adatti per attività più longeve e con la mia conoscenza molto limitata del multithreading, consideravo la vita media dei thread (diversi minuti) "di lunga …
Sto cercando un'implementazione ExecutorService che può essere fornita con un timeout. Le attività inviate a ExecutorService vengono interrotte se richiedono più tempo del timeout per l'esecuzione. L'implementazione di una tale bestia non è un compito così difficile, ma mi chiedo se qualcuno sappia di un'implementazione esistente. Ecco cosa mi è …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.