voglio eseguire un'operazione in ritardo su una mappa, in modo da sto usando Timer
, a cui sto passando un e un ritardo TimerTask
in millisecondi:Passando lambda ad un timer, invece di TimerTask
timer.schedule(new TimerTask() {
public void run() {
tournaments.remove(id);
}
}, delay);
Questo è una sorta di primitiva funzionalità simile alla cache in cui ho impostato un tempo di scadenza su una nuova risorsa appena creata.
ho pensato che avrei potuto farlo utilizzando lambda, proprio come segue:
times.schedule(() -> tournaments.remove(id), delay);
Ma il compilatore dice che questo non può essere fatto. Perché? Che cosa sto facendo di sbagliato? Potrei usare lambda per ottenere un codice più conciso o semplicemente non è possibile qui e dovrei attenermi a una lezione anonima?
Che cosa significa il compilatore dirvi? Inoltre, ti manca il secondo parametro 'delay' nel tuo esempio. – Zircon
Si dice che "non è in grado di risolvere la pianificazione del metodo (, lunga)" * –
dabadaba
Si consiglia di utilizzare 'ScheduledExecutorService' in preferenza su' Timer'. –